webs

Magento: primeras incursiones, recorriendo los productos

2016-06-20 - Categorías: Magento / PHP
Logo de Magento

Este estupendo CMS orientado a la venta online de productos hace las delicias de los vendedores, de igual modo de los maquetadores, y cómo no, también de los programadores.

Como analista programador llevaba ya un tiempo queriendo meterle mano a las entrañas de Magento. Así que poco a poco, he ido cogiendo los manuales para el usuario, luego el del diseñador, y ahora tengo entre manos el del programador. Ahora según van surgiendo las necesidades voy haciendo incursiones cada vez más a fondo en el código fuente de esta humongous web application.

La verdad es que lo estoy disfrutando porque Magento está desarrollado con una buena estructura y sobre un gran framework de desarrollo PHP, el Zend Framework. Incorporando técnicas de programación que le dan una gran flexibilidad sin añadir demasiada complejidad.

Continuar leyendo..

Administrar tu servidor con Webmin y Authentic Theme

2016-01-24 - Categorías: Amazon Web Services / GNU/Linux
Webmin dashboard

¡Buenos días a todos! Voy a tratar de no perder las buenas costumbres, como esta de compartir en el blog mi granito de arena en todo esto de la informática. Hasta estos últimos días, que no he tenido la necesidad de mantener al día tantos servidores como últimamente. Estaba haciéndolo manualmente, a pelo como se suele decir, entrando en los servidores y aplicando actualizaciones, modificaciones, etc.. Todo esto es mucho tiempo así que delegar en un proveedor de hosting todo éste trabajo es una buena elección. Pero no siempre te va a valer y puede que necesites hacer configuraciones que un proveedor de hosting no te va a permitir. Administrar tu propio servidor no tiene que ser complejo.

Todo esto me ha llevado a investigar sobre paneles de control de servidores. Tenemos el gran Cpanel, Plesk, Zpanel, y un largo etcétera. Por temas laborales ya he probado algunos en los propios proveedores. Muchos funcionan de maravilla y son sencillos de gestionar. Pero no me voy a dedicar a alquilar hosts, sino que simplemente necesito mantener unos pocos servidores y no es viable comprar una solución comercial. Así que navegando y navegando al final me topé con Webmin.

Qué tiene

Webmin configurando

A grandes rasgos es una web desarrollada sobre Perl, que se instala en el puerto 10000 del servidor y se integra con el sistema operativo. Nos permite ver el estado del servidor, hacer configuraciones de red, actualizarlo, programar actualizaciones automáticas recibiendo informes a tu email. Te permite configurar usuarios, permisos, instalar bases de datos, servidor web, configurarlos. También hay módulos para instalar un servidor de correo electrónico. Puedes administrar Apache2, Mysql, Postgres, Postfix, Dovecod, etc, etc, etc.

La verdad es que te quedas mucho más tranquilo teniendo una herramienta de estas instalada en un servidor. No tienes más que entrar  y de un vistazo puedes saber qué tal anda el sistema. Puedes aplicar las principales configuraciones y a correr que el tiempo es muy valioso.

Hay algunas tareas como la configuración hosts virtuales que haciéndolas a mano me he aclarado mejor. Pero deduzco que será cuestión de acostumbrarme al panel. Leo que hay extensiones de Webmin para configurar fácilmente hosts con varios dominios, permitiendo la lectura de correos a los usuarios proporcionándoles un panel de entrada al sistema.

Un detalle que me ha gustado mucho es la autenticación en dos pasos (multi-factor authentication, MFA). Con el que podemos tener por ejemplo en nuestro móvil el Google Authenticator, y tener un código de seguridad extra que se genere a cada 30 segundos, para poder entrar como en la imagen siguiente:

Webmin mfa


El theme, piel, o plantilla que podéis ver en las imágenes no es el original. Es el ‘Authentic theme’ que me ha gustado también mucho. Es totalmente sensible al dispositivo (responsive), con lo que también podemos aplicar configuraciones sobre nuestro servidor desde el móvil o tablet, cosa que se agradece en gran manera.

Aquí podemos ver lo sencillo que se hace mantener actualizado el sistema:

Webmin update


Aquí en la imagen se puede ver cómo configurar que todos los días se apliquen todas las actualizaciones del sistema, no sólo las de seguridad. Esto dispara cada día la instalación de todos los paquetes para actualizar y me envía un informe del resultado de la instalación a mi email. Ya os podéis hacer a la idea de que tiene muchas cosas, y lo tranquilo que me quedo con cada correo que recibo diciéndome que todo se ha actualizado correctamente.

Como buen usuario de Ubuntu, todas las pruebas y las imágenes que se ven son sobre Ubuntu. Me lo voy a anotar como indispensable en las nuevas instalaciones. Navegando y navegando por el menú lateral ya veo que no me lo voy a acabar, así que tendré que ver la documentación oficial de cada herramienta para ir más al grano en las tareas que se necesiten.

Terminando

Aquí la web oficial: http://webmin.com/

Es un proyecto alojado en Github, que por lo que veo se ve bien activo. Ahora mismo hace 4 horas que han subido una actualización, lo que denota que vamos a seguir teniendo actualizaciones frecuentemente, como todo buen proyecto Open Source.

Para el que quiera seguir investigando en esta joya de la informática, son interesantes los módulos Usermin y Virtualmin. No creo que tarde mucho en probarlos. De estos tenemos una versión gratuita y otra comercial, con las que vamos añadiendo más y más funcionalidades al panel de control.

¿Alguna sugerencia de otro programa similar para administrar servidores?


Magento 2: conociendo a la bestia parda

2015-12-07 - Categorías: Magento / PHP
Magento back-end

De todos las soluciones de tienda online que he conocido hasta la fecha, Magento es de lo más robusto y potente que he visto de código abierto. Estoy conociendo poco a poco los entresijos de Magento 1 en el trabajo, y es buen momento de ver las mejoras que trae Magento 2 y así cotejar.

Es un sistema de información dedicado a la venta robusto, flexible y muy personalizable. Alrededor de Magento se mueve todo un ecosistema de soluciones empresariales de la más alta gama. Todo esto es posible gracias a las características de Magento.

Para explicar todo lo que tiene Magento necesitamos mucho tiempo, terminaríamos antes buscando qué no tiene. Pero también encontrar qué no tiene va a ser difícil porque Magento es todo un referente mundial de las soluciones eCommerce existentes.

Un poco de historia

Nació como proyecto de código abierto en el 2007. Ya en el 2008 fue premiado como mejor nuevo proyecto de código abierto del año. En el año 2009 la empresa Varien lanzó la versión Enterprise con el modelo de negocio de suscripción anual. Ahora mismo es propiedad de Ebay, la cual es propietaria del 100% de la empresa.

Lanzaron también una versión Profesional, pero no debe de haber tenido mucho éxito esta segmentación porque ahora mismo sólo disponemos de la Community Edition y la Enterprise Edition.

Requisitos para la instalación

Instalando Magento

Se necesita de una buena máquina para correr Magento, por lo menos se recomiendan 2 Gigas de RAM y échale CPUs que cuantos
más mejor. Yo le he puesto una máquina virtual con Vagrant de 4 Gigas de RAM y 2 CPUs. Se ha dejado instalar después de preparar un poco el servidor sin demasiadas configuraciones.

Instalando

Haciendo unas pruebas jugueteando con Vagrant, me ha quedado un script bien sencillo. Ejecutando lo siguiente tenemos automatizada la instalación de todo lo necesario en un servidor Linux para poder instalar Magento 2. Dejo aquí el script para Ubuntu Server con todo en el mismo servidor, Apache y MySQL:

apache_config_file=»/etc/apache2/envvars»
apache_vhost_file=»/etc/apache2/sites-available/magentohost.conf»
php_config_file=»/etc/php5/apache2/php.ini»
mysql_config_file=»/etc/mysql/my.cnf»

sudo apt-get -y install build-essential binutils-doc git npm nodejs htop apache2
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/server.key -out /etc/ssl/server.crt -subj «/C=ES/ST=Alicante/L=Alicante/O=MiMagento2/OU=IT Department/CN=mimagento2.local» -passin pass:»»
cat <<EOI > ${apache_vhost_file}
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
LogLevel debug

ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined

<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
LogLevel debug

ErrorLog /var/log/apache2/error.ssl.log
CustomLog /var/log/apache2/access.ssl.log combined

<Directory /var/www/html>
Options Indexes Includes
Require all granted
</Directory>

SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/ssl/server.crt
SSLCertificateKeyFile /etc/ssl/server.key
</VirtualHost>
EOI

sudo a2dissite 000-default
sudo a2ensite magentohost.conf
sudo a2enmod rewrite ssl
sudo service apache2 reload

sudo apt-get -y install php5 php5-curl php5-mysql php5-sqlite php5-xdebug php5-mcrypt php5-gd php5-intl php5-xsl
sudo php5enmod mcrypt
sudo sed -i «s/display_startup_errors = Off/display_startup_errors = On/g» ${php_config_file}
sudo sed -i «s/display_errors = Off/display_errors = On/g» ${php_config_file}

sudo service apache2 reload

php -r «readfile(‘https://getcomposer.org/installer’);» | php
sudo mv composer.phar /usr/local/bin/composer
sudo chown root:root /usr/local/bin/composer
sudo chmod 755 /usr/local/bin/composer

# Instalar MySQL, la contraseña de root es root
echo «mysql-server mysql-server/root_password password root» | sudo debconf-set-selections
echo «mysql-server mysql-server/root_password_again password root» | sudo debconf-set-selections
sudo apt-get -y install mysql-client-5.6 mysql-server-5.6

sudo sed -i «s/bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/» ${mysql_config_file}

# Permitir acceso como root desde cualquier host
echo «GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION» | mysql -u root –password=root
echo «GRANT PROXY ON »@» TO ‘root’@’%’ WITH GRANT OPTION» | mysql -u root –password=root

sudo service mysql restart

echo «CREATE DATABASE magento2» | mysql -u root –password=root

Hay quien preferiría Nginx porque en sus inicios ejecutaba en multiples hilos de ejecución las peticiones HTTP, es ligero y sencillo. Ha llovido mucho desde que Nginx era el servidor más rápido del mercado con creces, viendo las últimas estadísticas comparativas entre Apache2 y Nginx más o menos van a la par en la fecha en que les escribo. No es objetivo hacer una comparativa Nginx-Apache en esta entrada así que lo dejaremos para otro momento si cabe.

A partir de aquí ya tenemos el servidor web Apache configurado con PHP, y una base de datos MySQL con la base de datos magento2 ya creada que usaremos para instalar nuestro nuevo Magento. También tenemos instalado globalmente en el sistema Composer, que cuando recién descomprimamos el nuevo magento y vayamos a instalar nos va a pedir que instalemos todas las librerías de PHP.

Descargamos la versión de Magento 2 en un fichero comprimido aquí:
https://www.magentocommerce.com/download

O si preferimos descargar desde el repositorio de códigos fuentes aquí:
https://github.com/magento/magento2/releases

Lo ponemos en el directorio del host principal de Apache que hemos configurado en /var/www/hml, vamos al directorio e instalamos las librerías de PHP:

cd /var/www/html
composer install

Ahora nos queda conectarnos a http://localhost/ para seguir las instrucciones de instalación. Si no vemos una imagen como la del instalador de arriba es que algo no ha ido bien. Para más información sobre Composer y cómo instalarlo de forma global, aparte del script de aquí arriba, podemos consultar una entrada del blog sobre esto o podemos ver las bondades de Composer y cómo la comunidad PHP se está organizando en librerías.

Después de la instalación

Instalación de Magento terminada con éxito

Tras esto podemos ver conectándonos a la base de datos que partimos de las no pocas 308 tablas, para empezar. Esto nos da una idea de la magnitud del programa que tenemos entre manos ¿cierto?

Las tareas cron, cachés..

El cron del sistema es el programador de tareas. Cuando recién hemos hecho la instalación, el panel de control nos notificará que instalemos las tareas automáticas para que funcione Magento o que las lancemos manualmente.

Esto hace necesario que tengamos acceso como root, como administradores del sistema, para que podamos configurar estas tareas en el servidor. No podemos instalar Magento en cualquier alojamiento web. O mejor dicho, sí que podemos, pero el funcionamiento va a ser una castaña si no hacemos los ajustes necesarios.

Otro tema que hace necesario un host con acceso como root son las cachés. En un sistema web tenemos caché de base de datos, compilación a bytecodes de PHP, generación de páginas HTML a partir de vistas. Y el gran Varnish, otro elemento a instalar y configurar para sacar el máximo partido a las prestaciones de nuestro servidor, aunque no es imprescindible tenerlo (al contrario de lo que dicen muchos administradores de sistemas). Evitar Varnish si no es necesario, como escuché a un experto en Magento en el último Meet Magento en España, nos puede aliviar las configuraciones ya que a veces este proxy inverso se mete en medio necesitando de más y más configuraciones a medida que instalamos extensiones o personalizamos nuestro Magento.

El sistema de cifrado SSL

En el script de instalación se crea un certificado autofirmado y se guarda en /etc/ssl/. A fecha de hoy ya queda poco para poder crear nuestros propios certificados 100% funcionales, para el entorno de producción o desarrollo, tantos como queramos, con Letsencrypt, pero mientras este sistema nos servirá.

Es de buena costumbre poner el cifrado en la zona de administración (back-end) y en el front-end. Para ello tenemos que configurar las URL base seguras y no seguras poniéndole el https delante. Por defecto se cifrará toda la navegación desde el momento en que haya datos personales de los usuarios. En el back-end se cifrará en todo momento.

Si vas a instalarlo en producción asegúrate de que esté todo funcionando antes de activar SSL en todo el sitio. Tener SSL mejorará el posicionamiento del sitio en los buscadores, pero me ha pasado que una extensión te fastidie todo porque no funcione correctamente, así que más vale probar y probar antes de dejarlo activado definitivamente. Aquí dejo la información para el que le sirva 😉

Características principales

Informes de inteligencia de negocio de Magento

Las bondades de Magento son una larga lista de características así que de entre las principales tenemos:

  • Multi-sitio web (varios dominios), multi-almacén y multi-vista de almacén, todo con un mismo panel de administración.
  • Multi-idioma, con packs de idiomas disponibles para instalar como extensiones.
  • Gestión total del catálogo; categorías y productos.
  • Gestión muy potente de atributos de productos.
  • Filtrado de productos para mejorar la navegación basado en atributos y características muy avanzado.
  • Integración con pasarelas de pago para poder instalar como extensiones.
  • Registro detallado que nos informa del estado actual con todo lujo de detalles: últimas ventas, ingresos, productos más vendidos..
  • Gestión de datos de clientes, registro, modificación.
  • Gestión de los usuarios que acceden al panel de administración.
  • Ventas; pedidos, facturas, facturas rectificativas, envíos..
  • Herramientas de marketing como emails transaccionales configurables, reglas de precios de catálogo o de carrito, herramientas SEO integradas.
  • Gestión de promociones basadas en características de productos o de carritos de la compra. Se pueden utilizar atributos personalizados para las reglas de promociones.
  • Temas para instalar; sistemas de páginas estáticas, bloques y widgets para personalizar.
  • También tenemos inteligencia de negocio con muchos informes detallados listos para ver en tiempo real.
  • Un sistema de gestión de índices y caché.
  • Muchas extensiones para personalizar nuestro Magento en su marketplace.
  • Por supuesto, acceso para interconectar con otros sistemas mediante punto de entrada a una API.
Home del panel de administración de Magento

Magento es enorme, parece el SAP de las soluciones eCommerce Open Source. Soy sincero, no conozco SAP en sus entrañas, pero ya sólo ver que tenemos 300 tablas para guardar los datos necesarios para funcionar me hice una idea. Entrar a detallar las características de cada zona de su panel de administración es una tarea interminable así que será mejor ir directamente a su funcionamiento, empaparse de su documentación, o ir buscando lo que necesites. Recomiendo dar una lectura rápida a las guías de usuario disponibles en su página oficial.

Terminando

Lo que destaca de esta solución eCommerce es su robustez y fiabilidad. Estoy viendo muchas mejoras en la versión 2 con respecto a la 1: aumento de velocidad, sistema totalmente cacheado, compatible con HHVM.. Destaca la integración de la herramienta de consola de Symfony. Tenemos disponible la integración con Odoo mediante la instalación de una extensión en Magento, se abre el acceso al Webservice, e instalando los módulos correspondientes en Odoo podremos sincronizar catálogo, stocks, clientes, pedidos, carros abandonados, etc.. esto último está disponible hasta para la versión 1.9, espero que pronto esté también para Magento 2 😉

Magento 2 front Luma

Al instalar los códigos me sorprendió que me pidiera ejecutar un ‘composer install’ para comenzar a correr la aplicación. Composer es una herramienta que organiza las librerías PHP, algo que venía haciendo falta. Es una herramienta PHP muy nueva, que están usando frameworks de desarrollo de la talla de Symfony o Laravel. Esto me hace preveer que el código fuente de Magento 2 puede incorporar pronto muchas nuevas mejoras del mundo PHP. Estaremos atentos.

Si has estado probando soluciones como Virtuemart, WooCommerce o Prestashop. Esta solución de código libre es más que interesante. Habrá que valorar qué es lo que necesitas para tu caso, pero lo que si puedo asegurar es que Magento es una gran solución.

El único inconveniente que le veo es que, por lo menos aquí en Spain donde resido, hay muy pocos desarrolladores especializados en Magento. Así que toma el dato, si quieres asegurarte el trabajo, aprende a desarrollar para Magento y no te faltará el trabajo.

Espero que haya dado una buena visión al sistema.

Un saludo.


Cómo configurar los permisos del directorio de un proyecto para Apache en Linux

2015-12-05 - Categorías: GNU/Linux
Powered by Apache

¡Hola! Este es un pequeño HOWTO para configurar los permisos de directorio de un proyecto web que está en un servidor Apache. Nos puede pasar que estamos editando los ficheros del proyecto, pero puede ser que Apache no pueda acceder correctamente a los nuevos ficheros, crearlos, modificarlos o borrarlos. También nos puede pasar que Apache cree ficheros y nosotros no podamos tocarlos. Vamos a evitarlo con unos sencillos pasos. Esto sirve para configurarlo en Ubuntu. También se puede aplicar a cualquier otro sistema operativo Linux.

El usuario por defecto de un servidor Ubuntu es ‘ubuntu’. El usuario de Apache es ‘www-data’, así que comenzamos dando permiso a Apache para que pueda usar nuestro directorio de trabajo donde desarrollamos la web. Por defecto Apache trabaja sobre con la página principal en /var/www/html pero este post es para configurar a nuestro gusto el destino el directorio donde vamos a tener la web.

Supongamos que tenemos nuestra web en desarrollo en:

/home/jaime/miweb/

Ahora bien vamos al directorio donde está nuestra web y damos permisos a Apache así:

cd /home/jaime/
sudo chown www-data:www-data -R miweb/

Doy por sentado que ya tenemos instalado Apache y que tenemos configurado el host. Ahora bien, queremos trabajar como usuario editando y viendo los resultados en el navegador. Añadimos a nuestro usuario al grupo www-data:

sudo adduser jaime www-data

Con esto ya podremos editar el contenido del directorio de la web en /home/jaime/miweb/. Antes no podíamos porque hemos dado la propiedad a www-data que es el usuario de Apache con el comando chown.

Ahora para que los nuevos archivos creados dentro del directorio de la web sigan siendo propiedad del mismo grupo www-data para que tanto Apache como el usuario (tú) podáis seguir trabajando ejecutamos lo siguiente para poner el ‘sticky-bit’ de grupo a los directorios:

sudo chmod g+s /home/jaime/miweb/
find /home/jaime/miweb/* -type d -print0 | sudo xargs -0 chmod g+s

Esto pone el directorio del proyecto con el sticky-bit de grupo y luego busca dentro todos los subdirectorios y también le ponemos el sticky-bit de grupo. Ahora cualquier archivo que crees dentro del directorio seguirá tendrá tu usuario de propietario, y de grupo www-data. Así Apache podrá seguir sirviendo los archivos sin problemas y podremos trabajar sin preocuparnos de dar permiso o propiedad a los archivos que ya no sean de www-data.

Espero que sirva.

Un saludo.


Integración Continua: la importancia de las pruebas automáticas

2015-09-24 - Categorías: General

Imaginemos que somos mecánicos y tenemos un coche. Le estamos arreglando un faro, un faro que se ha roto o que alumbra poco o tiene un golpe. Ya tenemos la pieza de recambio, quitamos el faro antiguo y le ponemos el nuevo. Acto seguido ¿qué debemos hacer? ¿llamamos al dueño a que lo recoja directamente?

Tenemos mucha prisa porque estamos reparando una cosa tras otra. Nos han hecho una llamada de última hora y no nos hemos dado cuenta de que no hemos hecho las conexiones correctamente. Llega el dueño, va a arrancar y revienta un fusible porque no hemos hecho las conexiones bien. Ahora es cuando se nos cae la cara de vergüenza porque ni siquiera hemos arrancado el coche a ver si funcionaba el nuevo faro..

En el desarrollo de software es de vital importancia hacer los programas rápidamente, entregarlos en el tiempo y forma, además de que deben funcionar bien. Estas prisas nos pueden jugar malas pasadas pero hay soluciones profesionales, formas de trabajo para controlar o evitar estos problemas.

Pruebas unitarias y funcionales

Esto que le ha pasado al mecánico con prisas es lo mismo que nos puede pasar si entregamos un programa sin haber hecho las pruebas pertinentes. En el mundo del software existen, además de las pruebas manuales, formas de trabajo en las que se pueden tener una batería de pruebas automatizadas que prueben el buen funcionamiento de una aplicación.

Por ejemplo, estoy empezando el desarrollo de un proyecto Open Source y tenemos ya el inicio de unas pruebas automatizadas. Los resultados de cobertura del código se pueden ver aquí:

http://obmscoverage.jnjsite.com/

Esto es el resultado de un navegador que simula un usuario que va probando las diferentes secciones de una aplicación web (programa web). El resultado mostrado es el Code Coverage, que significa cobertura del código. Es decir, es el porcentaje del programa que se ha probado navegando automáticamente por él sin que se funda ningún fusible 😉

Para el que quiera curiosear más en el programa que cito, el repositorio público está aquí:

https://github.com/obms/obms

Garantía de buen funcionamiento

Un nivel adecuado de cobertura oscila desde el 70% al 100%. Es muy tedioso alcanzar el 100%, y dependiendo de la naturaleza del software con un 70% – 80% será bastante. Pero si de ello dependen sistemas de vital importancia es aconsejable aumentar la cobertura al 100% o casi.

Esto a su vez evita que a medida que se va ampliando un programa, pasen desapercibidos errores nuevos al introducir nuevas mejoras en las aplicaciones web. Por esto es siempre bueno pedir los resultados de las pruebas automatizadas.

Integración Contínua (CI, Continuous Integration)

La integración continua es el sistema por el que todas estas pruebas automáticas se lanzan continuamente dando reportes de estado y alarmas para su supervisión.

Es un buen trabajo montar este sistema, pero una vez montado, la persona o el equipo de desarrollo se centrarán en desarrollar las nuevas funcionalidades, o en mantener el software.

Todo estará centralizado, organizado desde un punto desde el que, cada cierto tiempo se lanzarán automáticamente toda esta serie de pruebas automatizadas. También se suelen hacer a ciertas horas del día, o por la noche. Se podrán ver los resultados, con todo tipo de estadísticas. Se pueden automatizar análisis para buscar posibles problemas futuros, códigos fuentes duplicados. Se puede estudiar la mantenibilidad de un programa, entre otras cosas..

Para el proyecto anterior que cito, junto con las pruebas también se generan reportes de peligros o chequeos de estilo del código fuente:

http://obmscode.jnjsite.com/

También la documentación de la aplicación:

http://obmsdoc.jnjsite.com/

Aquí, el equipo o persona encargada de desarrollar, se podrá centrar en el análisis y programación puramente. Siempre que el sistema de Integración Contínua no de señales de alarma simplemente se puede continuar el trabajo, pudiendo dormir tranquilo.

Entregando

Aquí no termina todo, ahora tenemos un programa. Un programa que no da fallos, ha pasado las pruebas, tenemos alto porcentaje de cobertura, etc.. pero quedan otras tareas.

Una cosa es que el programa no de errores, y otra que haga lo que realmente tiene que hacer. Aquí es donde empezarán las pruebas de usuario, mantenimientos varios. Las llamadas pruebas de estrés, donde se mide la capacidad que tiene un programa. Es como si llevamos al circuito de carreras al coche con el que estamos trabajando para probarlo, damos unas cuantas vueltas viendo cómo va todo, su velocidad, frenada, etc.. Ahora sí que estaremos seguros al entregar el coche de que todo va a ir bien, o casi seguros.

Se quedan en el aire muchos conceptos pero no quiero extenderme demasiado y así tengo tema para otros posts 😉

Un saludo.


Abduction, complemento de Firefox

2014-09-28 - Categorías: General
Hoy traigo un sencillo complemento para Firefox. Siguiendo con la serie de utilidades para todo el mundo. Abduction sirve para capturar una imagen instantánea de una web que estés visitando. Una vez instalado en tu Firefox, simplemente le das al botón derecho de la zona de la web que quieras y te saldrá un menú desplegable. Le das a la opción que pone ‘Save Page As Image’ y te saldrá un recuadro encima de la web como el de la imagen de aquí al lado.

Sólo tienes que elegir la zona exacta que quieras guardar y le das al botón que pone ‘Save…’ arriba a la derecha, que significa guardar en castellano. Eliges dónde la quieres guardar y ya tendrás una captura de la zona de la web que quieres.
Un truco, si quieres capturar la web completa le haces doble click al recuadro y automáticamente se ampliará al total de la web. Si estas viendo una web muy larga no te preocupes, cuando guardes te saldrá una imagen muy larga de igual manera.
Sólo me falta poner la dirección del complemento:
Simplemente visita la dirección con el navegador Firefox y le das al botón verde que pone ‘Add to Firefox’ como el de la imagen a continuación que he capturado con Abduction jejej
¡Un saludo!

Mozilla y su navegador Firefox ya son de los grandes

2014-08-31 - Categorías: General

Cómo no, siguiendo con la serie de utilidades de código abierto, no me podía olvidar de una de las grandes joyas de la informática. Estoy hablando, como indica el titular, del navegador Mozilla Firefox.

Es uno de mis mejores aliados al conectarme a la web, vela por mi seguridad, por mi privacidad, sigue fiel a los estándares, es gratuito, de código abierto, está hecho por todos, es para todos.. si enumero todas sus características me puedo quedar aquí escribiendo toda una eternidad así que mejor voy a ir un poco al grano.

Situación actual

Son muchas las bondades que tiene éste navegador. Muchos ya lo conocerán, alrededor del 17-18% de los usuarios navegamos con él. Según los últimos datos que encuentro a fecha en que escribo, el ranking de navegadores queda en el orden siguiente:

  1. Internet Explorer
  2. Firefox
  3. Chrome
  4. Safari
  5. Opera

Si quieren corroborar los datos pueden consultar las estadísticas de StatCounter o NetMarketShare, por ejemplo. Hay muchos datos muy interesantes dispersados por Internet, como el uso de los navegadores por país, donde podemos ver que en muchos países Firefox es el navegador más utilizado. Probablemente que tengamos a Internet Explorer como ganador en el ranking mundial se debe a que viene instalado con Windows, pero eso ya es mi opinión.

Naturaleza

El hecho es que un proyecto como Firefox, esté siendo el segundo navegador más utilizado tiene mucho mérito. Pensemos que está organizado por la Fundación Mozilla, una organización sin ánimo de lucro. Una fundación que vive de donaciones, publica sus trabajos totalmente gratis para todos y además nos da el código fuente. No existe una gran multinacional detrás del navegador, sino que se trata de muchos voluntarios de todo el mundo colaborando junto con unos pocos que forman la Fundación Mozilla.

En su propia web pueden encontrar mucha información sobra la naturaleza de sus proyectos:
https://www.mozilla.org/es-ES/mission/

Podemos ver, cada vez más a menudo, proyectos de colaboración para un mundo mejor. Estoy hablando de GNU/Linux que nos proporcionan un sistema operativo completo, estoy hablando también de Wikipedia con su filosofía de ayudar a todo el mundo ofreciendo gratuitamente el conocimiento, y así unos tras otro podemos encontrar otros en la misma linea.

Colaboraciones

Personas de todo el mundo están colaborando activamente, y grandes empresas como por ejemplo Google ayudan al proyecto. La Fundación Mozilla está metida en el desarrollo y estandarización de muchas funcionalidades que tenemos hoy en dia en nuestros navegadores. Algunas de las cuales están parcialmente desarrolladas o en pleno desarrollo. Podemos ver proyectos para almacenar información en el navegador como IndexedDB o el WebGL para hacer gráficos en 3 dimensiones.

Destaca en 2014 la presentación de la mano de Mozilla y Unity (entorno de desarrollo con motor gráfico para desarrollo de videojuegos) la librería asm.js, con la que se podrá usar el navegador para correr completos videojuegos portando código desde C/C++. En Unity quieren hacer sus herramientas compatibles con la web, con lo que se podrán exportar los videojuegos y ejecutar dentro de navegadores, corriendo a la misma velocidad que los tradicionales videojuegos. En todos éstos avances y muchos más está metida la Fundación Mozilla.

El navegador

Para hablar de Firefox no podemos olvidarnos de los otros proyectos de Mozilla: como el lector de correo Thunderbird, o un nuevo sistema operativo para móviles, el Firefox OS, con el que podremos correr programas hechos completamente con lenguajes web. Ya hay acuerdos con Telefónica para poner en marcha éste sistema operativo, veremos a ver qué tal. Nos podemos hacer una idea de que Firefox está donde tiene que estar.

Tenemos las clásicas herramientas que podemos encontrar en otros navegadores como el historial, la navegación privada que está ahora de moda, los marcadores para guardar las direcciones de nuestras páginas favoritas, y un largo etcétera.

Podemos ver todas las características de primera mano aquí:
https://www.mozilla.org/es-ES/firefox/desktop/

Hace un par de años podíamos ver que Firefox se estaba quedando un poco atrás, estaba siendo un poco lento, y no incluía muchos cambios con las últimas versiones. Pero ya veo que nos traían muchas nuevos cambios haciendo más pequeña la barra de menús que por defecto no está visible. Tenemos un menú desplegable a la derecha donde podemos configurar los accesos directos que queramos. Es muy configurable, teniendo gran cantidad de complementos con los que aumentamos sus funciones.

Si eres desarrollador podrás inspeccionar las webs mientras navegas o desarrollas, viendo al detalle el funcionamiento de una web. La primera imagen de arriba del todo en 3D es una de éstas herramientas, el visor 3D. Es la página de Mozilla, si lo activamos podemos mirar desde distintas perspectivas una web viendo como se dibujan las web internamente, viendo como las capas se amontonan unas encima de otras hasta llegar a lo que realmente vemos. ¿Mola verdad? ¡Qué frikada! Jajaja

También es interesante que ahora los de Mozilla te dan gratis una cuenta Sync, con la que puedes también guardar los marcadores de páginas favoritas, historial, contraseñas, etc. Todo ello en dicha cuenta, no hay problema si se te estropea el ordenador o lo cambias. Si pones tu usuario y contraseña de Sync en otro navegador Firefox tendrás todos esos datos de nuevo.

En resumen, una maravilla, otra joya de la informática que debemos de conocer.

Instalar

En la web de Mozilla tenemos un enlace para descargar el navegador:
https://www.mozilla.org/
Debe salir la versión que te debes instalar según tu ordenador, ya sea Windows, Mac, Linux..

Si tienes Linux como en mi caso sólo con poner lo siguiente el línea de comandos ya lo tendremos instalado:

sudo apt-get install firefox

Si has llegado hasta aquí abajo te digo que ya sólo me queda despedirme. Me permites preguntarte ¿qué navegador estas usando? ¿conocías Firefox? ¿te ha gustado el artículo? ¿falta o sobra algo? Para cualquier cosa, un mensaje aquí abajo, un click en me gusta, compartir, etc.. 😉

¡Gracias! ¡Saludos!


PHP 3: Condicionales

2014-03-14 - Categorías: PHP

Siguiendo con la serie de minitutoriales, hoy les voy a dejar uno sobre los condicionales en PHP. Estamos viendo lo que se llaman estructuras de control, y dentro de ellas pretendo dividirlas y ver aquí sólo los condicionales if y switch.

Si buscas un tutorial breve y concreto, sin rodeos y sin entrar en detalles, aquí lo tienes.

A saber..

If

Los condicionales comprueban si se cumple una condición, como su nombre indica, y en ése caso ejecutan el código programado en él. Por ejemplo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <p>
            <?php
   $variable = 2;
   if ($variable == 2) {
    echo "La variable vale dos.";
   } else {
    echo "La variable no vale dos.";
   }
            ?>
        </p>
    </body>
</html>

El código habla por sí sólo. Tenemos una web que utiliza el estándar HTML5 como indica su DOCTYPE, y en el cuerpo de la página tenemos incrustado código PHP. Simplemente mira si la variable vale 2 y como así es imprimirá ‘La variable vale dos.» en la web. Si no valiera dos entonces ejecutaría lo que hayas puesto en el else.

El meollo de los condiciones está en la expresión de comparación ($variable == 2). Tenemos disponibles varios operadores de comparadores, por ejemplo: ==, <=, >=, !=
Están todos muy bien explicados aquí http://www.php.net/manual/es/language.operators.comparison.php

Switch

Por otro lado tenemos el switch. Se usa para encontrar valores concretos. Un ejemplo para vero claro podría ser:

$otravariable = "patata";
switch ($otravariable) {
  case "patata" :
    echo "Es una patata.";
    break;
  case "boniato" :
    echo "Es un boniato.";
    break;
  case "cebolla" :
    echo "Es una cebolla.";
    break;
  default :
    echo "¡Alguien me ha cambiado el valor de la variable!";
    break;
}

Podriamos haber usado varios condicionales de tipo if para ir comprobando $otravariable. Pero cuando tenemos más de dos posibles valores es mejor usar la estructura del switch. Fíjate que dentro de cada caso hay un break para indicar que ahí termina el caso. Si no los ponemos estaremos uniendo varios casos.

Es importante notar también el caso especial default que se ejecutará sólo cuando no encuentre el valor.

De nuevo para terminar me remito a la documentación oficial http://www.php.net/manual/es/index.php, aquí tiene en la sección de Estructuras de control los condicionales y muchísima más información.

Si te ha sido útil o te ha gustado dale click al +1, compartelo.. también puede dejar un comentario.

¡Un saludo!


¿Sabía cómo se hacen los gestores de contenido más conocidos?

2014-02-07 - Categorías: General
Al hablar de gestores de contenido hablamos por ejemplo de los archiconocidos WordPress, Joomla!, Drupal, etc.. Muchos usan herramientas comunes, por ejemplo, para el envío de emails tenemos PHPMailer, Swift Mailer, SendMail o la herramienta básica mail() de PHP.

Por otro lado tenemos dichas herramientas disponibles para crear las webs de forma más artesanal, más a medida, según la web que se necesite. Es decir, se pueden usar los componentes que usan los gestores de contenido y hacer nuestra propia web creando nuestro propio gestor de contenido sin gastar demasiado tiempo.

En el lenguaje PHP tenemos una gran librería de utilidades donde la comunidad de programadores comparte de forma totalmente gratuita: https://packagist.org/
Si tiene alguna utilidad compártala, en la comunidad de desarrollo PHP lo agradecemos 😉

Ni qué decir que todas éstas herramientas son indispensables para el desarrollo de buenos sistemas de información cumpliendo con los plazos de entrega y con las mejores calidades.

Resumiendo, de igual manera que puedes pedir un ordenador a medida, en Jnjsite.com le ofrecemos webs a medida. Con las opciones que necesite, con los mejores estándares de calidad. Webs a medida que suplirán todas las necesidades y encajarán como un traje hecho sólo para usted.

Un saludo!
🙂


Joomla! equilibrio entre potencia y flexibilidad

2014-01-10 - Categorías: General
Un CMS es un gestor de contenidos para una web, un software para administrar su web. Como todo buen software debe tener flexibilidad y muchas opciones, eso nos da la potencia.

¿Has visto el nuevo panel de administración de la nueva versión de Joomla 3.2?

Es un gestor muy potente:
  • Gran cantidad de extensiones, plantillas de diseño.
  • Buena documentación en Internet.
  • Comunidad de usuarios muy grande.
  • Compatible por defecto con dispositivos móviles.
  • Gestión de usuarios con roles, privilegios, permisos, grupos..
  • Sistema de actualización automatizado.
  • Adaptable por defecto a muchos tipos de web.
  • Y un largo etcétera.
Un saludo!

Drupal, un gestor de contenidos muy flexible

2014-01-10 - Categorías: General
Drupal es otro sistema gestor de contenido (CMS). Es software que se instala en una web para gestionarla. Se dice que está hecho por programadores y orientado para programadores, de ahí su flexibilidad y potencia. Se puede hacer de todo con Drupal.

La imagen es del panel de control, buscando actualizaciones..

Algunas de sus características

  •   Excepcionalmente flexible.
  •   Compatible con varias bases de datos, entre ellas MySQL, PostgreSQL y SQLite.
  •   Muchas extensiones, plantillas de diseño, utilidades, aunque pocas en comparación con los otros dos principales WordPress y Joomla!
  •   Al principio difícil de aprender pero muy potente después.
  •   Impresionante comunidad de desarrolladores con gran cantidad de documentación.
  •   Grandes cambios se vienen con la versión 8, aún en desarrollo.
  •   Y un largo etcétera.
La web: https://drupal.org/

Un saludo.


Poner tu negocio en «la nube»

2013-12-18 - Categorías: General


No es lo mismo poner un negocio en la nube, que ponerlo por las nubes, o estar en las nubes. Es  lo llamado cloud computing en inglés, se traduce por computación en la nube. Pero ¿qué es eso de la nube? ¿dónde está? ¿no está ya mi web en la nube? ¿qué es exactamente la nube de Internet?

Qué no es

Tradicionalmente, si contratamos espacio para poner una web en Internet, o si conectamos un ordenador a Internet, no estamos montando una nube. Solemos venir contratando este servicio a una empresa que nos alquila una cantidad de espacio, una velocidad del ordenador, una cantidad de visitas posibles (traducido en tasa de transferencia), cantidad de emails almacenados, etcétera…
Todo ésto es lo que no es, lo que se viene haciendo de manera tradicional limitando el uso de lo que ponemos en Internet. Hoy en día podemos encontrar soluciones cloud, en la nube, supuestos servicios en la nube que realmente no lo son. Se está utilizando esta forma de nombrar a la nube porque se vende bien, por eso debemos poner especial cuidado.

Qué sí es

En líneas generales, la nube es un conjunto de servicios que nos ofrece una empresa, los cuales se van ampliando conforme se necesita más. Para que nos entendamos, si tenemos una web y resulta que de repente necesitamos 27 Gigas extra de almacenamiento, si estamos en una nube ésto se amplia automáticamente y pagaremos por la cantidad de espacio que usemos. De igual manera ocurre con todo, tráfico entre la web y los visitantes, velocidad de procesamiento, balanceo de carga en las bases de datos, etcétera.

Es decir, se trata de un sistema escalable automáticamente, que se va aumentando o disminuyendo según es necesario y sólo pagaremos por lo que usemos. Hoy en día hay muy buenas soluciones para ésto y las empresas quieren cada vez más tener éste servicio. Pero no todas lo ofrecen realmente o dan un servicio parcial de lo que realmente es cloud computing.

Terminando

Una nube es un servicio en Internet donde al tener una aplicación web su capacidad para dar servicio aumenta o disminuye automáticamente, es escalable, dando todo el servicio que sea necesario sin colapsarse ni saturarse. De igual manera se paga por lo que se use, ni más ni menos, según las tarifas de cada empresa aumentando los costes o disminuyendo según la cantidad de servicio que se haya dado.
Para citar dos ejemplos de las empresa famosas:
  • Amazon, con sus Amazon Web Services y el Elastic Beanstalk, una solución más que interesante.
  • Google, con su App Engine, simplemente práctico y fácil de usar. 
Un saludo.

© 2022 JnjSite.com - MIT license

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