Webs hechas con KumbiaPHP desde Venezuela

Read More

Desde Venezuela les presentamos un par de sitios desarollados con Kumbiaphp Framework, se tratan de http://iglesiaidm.org y http://tullegada.com.

IglesiaIDM.org

Iglesia IDM

La Iglesia Dios Misericordioso (IDM) es un sitio que ofrece información de interés para su comunidad. La Iglesia tiene un dinamismo constante de generación de contenido, por lo que requerían de un espacio donde ellos mismos pudieran administrar sus videos, galerías, noticias y eventos. En este sentido aprovechando las bondades de KumbiaPHP desarrollamos el sitio y un administrador de contenidos de muy fácil manejo.

TuLlegada.com

Tu Llegada

TuLlegada.com es un portal de red turística comercial de Venezuela que busca recrear, incentivar y promover el mercado turístico comercial tanto nacional como internacionalmente.

Se trata de una solución que posee un buscador de servicios turísticos y comerciales, basado en categorías y geolocalización aprovechando las bondades de Google Maps. Cuenta con administrador de contenidos integrado con Ext JS, que permite al Administrador y Anunciantes la actualización de anuncios, banners y noticias.

ScaffoldController: Modificando vistas

Hasta aquí hemos invertido tiempo en revisar el uso básico del ScaffoldController con KumbiaPHP creando nuestros CRUDs de forma rápida, modificando el estilo de las vistas (al añadir un nuevo conjunto de vistas que cargan mediante la variable de controlador $scaffold), y reemplazando comportamientos particulares para modificar el conjunto de datos (al reescribir el método index).

Nueva meta u objetivo usando ScaffoldController

Este post tiene por objetivo hacer un resumen de lo que ya hemos visto en las entregas anteriores, y sacar aún más partido al uso de scaffolding con nuestro framework, de tal manera que puedas aplicar los conceptos que se describen en otras situaciones y así buscar mantener el principio DRY: No te repitas.

En sí, el uso de Scaffolding es una declaración clara del principio DRY, pues lo usamos para no tener que copiar y pegar comportamientos que son inherentes a diferentes situaciones: como crear, actualizar, eliminar y listar registros de una tabla (a modo de ejemplo, podríamos crear controladores scaffolding o heredables para otras tareas que no sean siempre la gestión de datos en tablas).

A modo de añadir más fuerza al principio, los frameworks de desarrollo web se han creado basándose primariamente en dicha idea: escribir lo necesario, evitando repetir comportamientos, y por ende se disminuye el número de líneas de código, el nivel de errores y, por ende, el tiempo de desarrollo y mantenimiento de los sistemas o aplicaciones creados con ellos.

Por eso es que existe una clasificación de carpetas: para controladores, modelos, vistas, ayudantes (helpers), librerías particulares, y librerías externas (vendors).

Si necesita comprender más los conceptos básicos de nuestro framework puede ver Kumbia Essentials.

Manos a la obra

Como ya se mencionó, un scaffolding es una estrategia para no repetir código que se usa en labores comunes. Hasta aquí lo hemos usado para tener un CRUD de la tabla que representa las categorías, y también nos ha permitido sobrescribir la forma en que hacemos la presentación de la acción index (listar los registros de la tabla).

Ahora iremos un poco más lejos

  1. Modificaremos la vista particular de la acción index.
  2. Sobrescribiremos nuestro controlador para modificar el comportamiento al guardar y actualizar los registros.

El cliente nos pide modificar la visualización de la lista de categorías para quitar de ella los atributos de fecha y renombrar el atributo nombre y categorías por Nombre Categoría y Categoría Padre. También nos solicita modificar el comportamiento de la acción crear para que el formulario aparezca limpio para agregar nuevamente, en vez de viajar a index una vez enviado el formulario.

De igual forma debe hacerse para que la acción editar recargue el formulario modificado en vez de viajar a index. Iremos de lo fácil a lo menos fácil.

Continue reading “ScaffoldController: Modificando vistas”

Los frameworks de php más rápidos, benchmark 2017

Read More
Gráfica del benchmark de frameworks php

¿Qué es un benchmark?

Según Wikipedia, técnica utilizada para medir el rendimiento de un sistema o componente del mismo …

Anteriormente ya publicamos benchmarks con diferentes frameworks php en el blog y wiki, pero ya son antiguos. Esta vez usaremos los datos de una comparativa independiente, que emplea versiones actualizadas de los frameworks.

Estos datos de rendimiento son resultado de un trabajo serio y bien hecho de Kenjis en Github. En el link pueden encontrar todo el código, ejecutarlo en sus propios ordenadores y ver las gráficas interactivas con mucha información. Además encontrarán los datos del equipo que se usó, incluyendo notas. Finalmente pueden aportar pasando un pull request o indicando un error.

Resultados del benchmark de Kenjis, realizado el 14 de febrero de 2017.

Comparativa de velocidad de los frameworks php

Framework Respuestas por segundo Relativo Uso de memoria Relativo
siler-0.6 2,069.69 20.3 0.25 1.0
kumbia-1.0-dev 1,753.60 17.2 0.29 1.2
staticphp-0.9 1,665.28 16.3 0.27 1.1
phalcon-2.0 1,618.39 15.9 0.26 1.1
tipsy-0.10 1,376.97 13.5 0.32 1.3
fatfree-3.5 965.16 9.5 0.41 1.7
codeigniter-3.0 753.09 7.4 0.42 1.7
nofuss-1.2 667.24 6.5 0.40 1.6
slim-3.0 550.43 5.4 0.61 2.5
bear-1.0 502.52 4.9 0.73 3.0
lumen-5.1 415.57 4.1 0.85 3.5
yii-2.0 410.08 4.0 1.32 5.4
zend-expressive-1.0 403.34 4.0 0.75 3.1
cygnite-1.3 369.12 3.6 0.71 2.9
fuel-1.8 344.26 3.4 0.63 2.6
silex-2.0 342.81 3.4 0.78 3.2
phpixie-3.2 267.24 2.6 1.25 5.1
aura-2.0 233.54 2.3 0.88 3.6
cake-3.2 174.91 1.7 1.95 7.9
zendframework-3.0 133.87 1.3 2.24 9.1
symfony-3.0 131.50 1.3 2.18 8.9
laravel-5.3 101.94 1.0 2.83 11.5

Continue reading “Los frameworks de php más rápidos, benchmark 2017”

Webs hechas con KumbiaPHP desde Argentina

Les presento dos sitios webs argentinos hechos con KumbiaPHP framework.

Simetra Service SRL

Home page del sitio web de Simetra Service SRL hecho con KumbiaPHP
Home page del sitio web de Simetra Service SRL hecho con KumbiaPHP

Simetra Service SRL es una empresa de construcción y obras civiles en Neuquén, Argentina.

Al momento de realizar este trabajo, la empresa tenia hecho el sitio con uno de esos CMS mundialmente conocidos. Cada semana, había que andar buscando y borrando código ofuscado. Para quitar el aviso que indicaba, que era un sitio que había sufrido un ataque de phishing, cada vez que se ingresaba.

Tratando de sanear este problema, rearmado el sitio web también tenían en mente un rediseño global de la imagen de marca.

Teniendo en cuenta que la frecuencia de cambios de contenidos es muy baja, se optó por realizar un sitio completamente estático. Que tuviese un formulario de contacto. Y otro formulario para poder adjuntar el curriculum vitae mediante el upload de un archivo, y enviarlo por email hacia el departamento de RRHH. Si bien a día de hoy no está activo, el sitio contempla la posibilidad de poder leerlo en inglés, utilizando la internacionalización i18n mediate gettext.

La implementación del diseño responsive fue hecho con el framework css Bootstrap

MIRA SB

Home page del sitio web de MIRASB hecho con KumbiaPHP
Home page del sitio web de MIRASB hecho con KumbiaPHP

Es un proyecto personal que tenemos de hobby con dos amigos camarógrafos más. El eje central es el skateboarding en Neuquén, Argentina. Pero también generamos contenidos de eventos y actividades relacionadas a él.

Con la idea de poder cargar fácilmente los contenidos, se armó un CMS a medida, poniendo el mayor hincapié en la funcionalidad de las galerías. Cada galería se carga aparte de los posts, y puede volver a utilizarse en caso de ser necesaria.

Al momento de visualizar una galería, se puede mostrar una imagen o un listado de imágenes a abrir mediante un lightbox. Para poder hacer esta carga se armó un script de shortcodes, que se agrega como un plugin al editor WYSIWYG.

Los posts se categorizan usando la simple funcionalidad de tags. Para poder realizar búsquedas, se aprovecharon las bondades del motor de base de datos creando índices FULL TEXT.

Reproducimos los vídeos utilizando Vimeo, aunque en algún momento quizás los alojemos en nuestro servidor.

Por último, para el armado del sitio se utilizó una versión simplificada de Bootstrap.

ScaffoldController: Modificando comportamientos y contenidos

Read More
Vista index con categoría relacionada como texto

La entrega anterior hablamos acerca del uso de la técnica de Scaffolding para CRUD con KumbiaPHP usando la clase ScaffoldController. Espero que muchos se hayan sorprendido gratamente con la funcionalidad que ciertamente ahorra mucho trabajo rutinario, ya que es altamente flexible.

Para que se entusiasmen, dentro de las posibilidades  tenemos: reescribir métodos y modificar comportamientos en controladores, modificar los archivos de vista, e incluso puedes crear tus propios scaffoldings. Pero bueno, vamos paso a paso.

Manos a la obra con ScaffoldController

Vamos a trabajar en base a supuestos. Supongamos que queremos mostrar el nombre de la categoría padre para aquellas categorías que estén anidadas.

Lista de categorías

Como se ve en la lista, las categorías relacionadas sólo se ven con su identificador.
Por lo tanto, vamos a modificar la fuente de datos que pasamos a la vista Index para que ésta pueda presentar los contenidos respectivos.

En el modelo

Lo que vamos a hacer es crear un método que cumpla con lo que queremos lograr: mostrar el contenido de la tabla de categorías incluyendo el nombre de la categoría padre en aquellas categorías que heredan de otra. De este modo tendremos una modificación como la siguiente:

Archivo: models/categorias.php

<?php

class Categorias extends ActiveRecord 
{

    function getCategorias($page = 1) 
    {
        return $this->paginate(
            'columns: categorias.id, categorias.nombre, cat.nombre as categorias_id, categorias.creada_at, categorias.actualizada_in', 
            'join: left outer join categorias cat on categorias.categorias_id = cat.id',
            "page: $page", 'order: categorias.id desc');
    }

}

En el controlador

El segundo cambio lo haremos desde el controlador, para cargar los cambios que hemos hecho en el modelo. Lo que reemplazaremos (porque es una sobre escritura de index en ScaffoldController) será la función index tal como se muestra a continuación.

Archivo: controllers/categorias_controller.php

<?php
class CategoriasController extends ScaffoldController
{
    public $model = 'Categorias';

    public function index($page=1)
    {
        $this->data = (new Categorias)->getCategorias($page);
    }
 
}

Continue reading “ScaffoldController: Modificando comportamientos y contenidos”