LATEST ARTICLES

agosto 25th 2016

Zend Expressive en 15 Minutos (Video) – Ingles

Número de lecturas: 180
{lang: 'es-419'}

Una charla interesante de Dockermantank @dragonmantank

agosto 22nd 2016

Cómo Instalar Magento (tienda el línea)

Número de lecturas: 190
{lang: 'es-419'}

En nuestros post anteriores hemos estado hablando mucho sobre tiendas online, pero siempre enfocándonos en PrestaShop. Ahora bien, como todos sabemos, éste no es el único CMS que encontramos disponible, también podemos acudir a Magento. Y de hecho, no es para nada una mala opción, Magento es un increíble CMS orientado al comercio online que sin duda te brindará una muy buena plataforma. Es por ello mismo, que hoy nos enfocaremos en él y te mostraremos cómo instalar Magento.

Cómo Instalar Magento de forma fácil y rápida
Los pasos para instalar un CMS tal como Magento, son en realidad muy fáciles. Éstos, básicamente constan de 3 pasos, subir los archivos, crear la base de datos y seguir los pasos que nos pedirá el instalador. Como vemos, es algo sumamente sencillo y en poco más de unos minutos tendrás tu tienda en pie y podrás comenzar a trabajar en ella sin problemas.

Pasos para instalar Magento
El primer paso que debemos seguir para poder instalar este CMS, es descargarlo de la web oficial de Magento. Para lo cual, será primeramente necesario que nos registremos en el sitio, luego de estar registrados y logueados podremos sin más descargar el CMS.

Luego de hemos descargado Magento, ya podemos comenzar con la configuración e instalación de éste. Igualmente, para ello, tenemos dos posibles formas de llevarlo a cabo. La primera de ellas, es subiendo los archivos vía el Administrador de Archivos de cPane, aunque será solamente efectiva en el caso de que nuestro servidor corra cPanel. De lo contrario debemos utilizar nuestro cliente de FTP, y por allí subir los archivos.

Subiendo el paquete de Magento al servidor
Opción con cPanel
Ingresamos al cPanel de nuestro dominio, normalmente podemos utilizar dominio.com/cpanel

Luego de ello, accedemos a la sección Files > File Manager para poder subir los archivos desde allí. Al acceder a dicha sección, se nos abrirá un panel en el que debemos seleccionar la opción Upload.

Subimos el archivo y lo descomprimimos dentro del directorio que deseamos se encuentre el CMS.

Opción a través de FTP
La otra opción que tenemos es subiendo los archivos por FTP, para ello simplemente accedemos a nuestro cliente FTP y subimos los archivos que hemos descargado al directorio correspondiente.

Para esto, podemos utilizar un cliente como por ejemplo, FileZilla o Cyberduck. Si no sabes como utilizar un cliente de FTP para subir tus archivos, puedes guiarte por este tutorial: ¿Qué es el FTP y cómo se usa?.

Base de datos
Una vez que contamos ya con los archivos en nuestro servidor, es hora de pasar a la base de datos. La cual sin duda es necesaria para poder instalar nuestro CMS correctamente, además es quien después de todo, contendrá toda la información de nuestro sitio.

Para crear la base de datos desde cPanel, simplemente vamos a la sección Databases y creamos allí la base de datos, el usuario y los asociamos dándole todos los privilegios.


Por otro lado, en caso de no contar con cPanel, no hay problema, podemos llevar a cabo ésto creando elusuario y base de datos desde MySQL directamente.
Instalando Magento
Este es uno de los pasos importantes sobre cómo instalar Magento: ahora que tenemos los archivos en el servidor y la base de datos lista, ya podemos proceder con la instalación del CMS. Para poder comenzar con la instalación de Magento, debemos acceder a la sección en donde descomprimimos nuestros archivos, por ejemplo http://dominio.com/magento. Allí, se nos abrirá el asistente de instalación de Magento.

Pasos para instalar nuestra tienda Magento
El primer paso, luego de acceder a dicha dirección será leer los términos y condiciones, aceptarlos y continuar al siguiente paso.

En el siguiente paso, Magento se encargará de revisar que contamos con la versión de PHP adecuada, así como también sus extensiones y demás. Si todo va correcto, simplemente continuamos al siguiente paso, de lo contrario, habrá que verificar el error que nos muestra y ver como podemos solventarlo, dependiendo de si es la versión, alguna extensión faltante, etc.


El paso número dos, es configurar los datos de nuestra base de datos. Aquí simplemente colocamos los datos que correspondan y chequeamos que se pueda conectar correctamente.

Como vemos, hay algunos datos que no son totalmente necesarios, aunque sí son recomendables, por ejemplo tener un password de acceso a MySQL, si bien allí dice que no es necesario, sí es recomendable en cuanto a seguridad se trata.

Lo demás datos, tales como el usuario y nombre de la base de datos, serán los que hemos creado en el punto anterior.

En cuanto al servidor, la mayoría de las veces es localhost, es decir, si tu sitio se encuentra en el mismo server que tu base de datos. Si tu base de datos se encuentra en un servidor distinto, entonces allí debes colocar la IP de dicho servidor.


El paso número tres, es la configuración de nuestro sitio. Allí indicaremos la dirección por la cual deseamos acceder al sitio, así como también al administrador. Por otro lado, también podemos configurar si deseamos activar el protocolo seguro “Https” ( esto lo podremos activar si contamos con un certificado SSL en nuestro sitio), donde deseamos guardar las sesiones y si deseamos crear una clave de encripación propia. Igualmente estos últimos puntos podemos obviarlos, además de que los podremos cambiar más adelante si así deseamos.

En el paso número 4, es donde indicaremos la zona horaria de nuestro sitio, así como también el lenguaje, entre otros.

Y por último el paso número cinco, será el paso en el cual crearemos el usuario que administrará el sitio. Como siempre, recuerda crearlo con un email verdadero, un nombre de usuario fuerte, distinto de los tan conocidos “admin”, “administrador”, etc, y coloca un password fuerte.

Luego de esto, ya podemos ir al siguiente paso, en el cual se ejecutará la instalación y si todo va correcto, en un par de minutos tendremos nuestra tienda online Magento en pie.


Conclusión
Cómo Instalar Magento ya no es una cosa tan difícil, ¿verdad? Montar una tienda usando Magento es algo relativamente sencillo y que no nos llevará más de unos minutos. Lo que más nos llevará tiempo después de todo, será subir los archivos vía FTP o por cPanel y crear la base de datos, lo demás es totalmente intuitivo y es básicamente llenar datos y presionar siguiente.
Fuente:
guiadev.com

agosto 19th 2016

¿Vas a jugar Pokemon Go? Sigue estos consejos

Número de lecturas: 520
{lang: 'es-419'}

Pokémon Go es el último juego que está siendo un enorme exito entre los usuarios de smartphones, ¿qué debemos tener en cuenta si lo instalamos?
¿Qué es Pokémon Go?
Es un videojuego de aventura que usa la realidad aumentada, mezcla imágenes reales captadas por la cámara del dispositivo con elementos multimedia. Usa además el GPS del móvil para posicionarnos en un mapa real, y conexión de datos para conectarnos al servidor.
El juego requiere que el usuario recorra físicamente su entorno para encontrar Pokémons que irán apareciendo. Éstos irán aumentando de nivel en base a pruebas y objetos que el usuario vaya encontrando y/o comprando. Además, existen sitios “especiales” para el juego como Poképaradas (Pokéstops) y gimnasios, donde siempre hay un nivel de acción alto, por lo que serán lugares físicos muy frecuentados por los jugadores.


Aunque la app se publicó el 6 julio en Australia y Nueva Zelanda y al día siguiente en Estados Unidos, copias de la aplicación han circulado por todo el mundo, superando en usuarios a aplicaciones populares como Tinder y siguiendo de cerca a Twitter.

En España esta aplicación comenzó a verse instalada en dispositivos móviles el jueves 7 de julio, sin que se hubiera publicado aún en nuestro país. Esto ha supuesto que los usuarios consiguieran la aplicación (.apk) de forma no oficial, y se la descargaran de sitios que no son las tiendas oficiales, con el consiguiente riesgo de privacidad y seguridad que a continuación detallaremos. Desde hoy, para todos aquellos impacientes en probarla, decir que ya está publicada la app en las tiendas oficiales de Google y de Apple.

¿Qué problemas puedo encontrarme al usar este juego?
Podemos encontrar inconvenientes en varios aspectos, unos más importantes que otros, pero deberemos tenerlos todos en cuenta.
Problemas físicos
Lo primero que hay que señalar es que es un juego en el que hay que moverse por el mundo real, y eso implica desplazamiento. Si vamos en un vehículo “cazando Pokémon” podemos acabar cazados por la Policía, por un bordillo o por una farola. También es posible que nos guíen a sitios en los que no deberíamos entrar, como por ejemplo una comisaría, un jardín de una casa privada, o incluso algún sitio peligroso como Mosul (Irak, zona de guerra contra el ISIS) o algún callejón discreto, donde además de Pokémons, han cazado también móviles, carteras, etc.
Al igual que con el tema de los selfis, el riesgo físico hay que valorarlo de forma adecuada, en caso contrario otros lo harán por nosotros (Policía Local, Guardia Civil, algún vecino celoso de su privacidad…)

Riesgos de privacidad
Esta aplicación, al instalarse requiere una serie de permisos para acceder a funciones y datos del dispositivo, igual que sucede con otras aplicaciones. Sin embargo, en la primera actualización de Pokémon Go para iOS los permisos ha sido uno de los cambios. Por este motivo, conviene revisarlos y comprobar que estamos de acuerdo con la información de nuestro dispositivo a la que accede la app. Según Google y Niantic, la empresa creadora del juego, se limitará la recogida de datos de la aplicación.
Los permisos, que a día de hoy solicita a los usuarios con dispositivos Android, son los que se muestran en la siguiente captura de pantalla:

En relación a este tema, la privacidad, comentar que se han detectado una serie de “aplicaciones de terceros” relacionadas con el juego, las cuales solicitan muchos más permisos que la propia aplicación Pokémon Go. Por ejemplo, un investigador de RiskIQ, dice haber detectado 172 de estas aplicaciones no oficiales relacionadas con la aplicación. También hay noticias que recogen algún caso que pone de manifiesto el problema de hacer uso de la geolocalización: Descubre que su novio le era infiel gracias a Pokémon GO.

Malware

Como no podía ser de otra forma, el hecho de que no estuviera publicada la app hasta hoy en las tiendas oficiales de aplicaciones de Google e iOS, hizo que proliferaran en la red versiones “manipuladas del juego” para que los usuarios las descargaran en sus dispositivos. La empresa de seguridad Proofpoint, por ejemplo, ha reportado la aparición de Droidjack en una copia de la aplicación, un malware con capacidades de administración remota que deja en manos del ciberdelincuente el control del dispositivo móvil.

Mediante este tipo de malware los criminales tienen acceso a las funciones y datos del móvil, y a los sitios desde los que se accede desde el mismo, de forma que un dispositivo con este malware estaría recopilando y enviando web visitadas, usuarios y contraseñas, además de otra mucha información.

Si hemos instalado la aplicación sin esperar a que estuviese publicada hoy en las tiendas oficiales y queremosasegurarnos de que no estaba infectada con el troyano podemos seguir la recomendación que nos hacen en esteartículo de Xatakandroid.

Coste o consumo

Aunque la aplicación es gratuita, uno de los permisos que solicita es la de hacer pagos, lo que indica que habrá posibilidad de comprar objetos, características, etc. Esto en manos de un niño puede ser un problema como se vio en su día con un ejemplo en Jurassic World y este otro con el FIFA 16.

Además del gasto económico directo del juego, hemos de analizar también el consumo de datos de la aplicación, según alguna noticia publicada con una hora diaria podría llegar a los 400MB al mes, lo que sumado al consumo habitual, podría superar nuestra tarifa de datos y tendríamos que pagar ese exceso, o bien sufrir una conexión muy lenta.

Por último la batería. En este juego deben estar activados el GPS y los datos de forma continuada, esto implica un gasto de batería enorme. Si además unimos el consumo de la cámara y de la pantalla, que aunque son menos tiempo, también cuentan, conseguiremos que nuestra batería se consuma en muy poco tiempo. Todo ello implica que nos podamos “quedar tirados” sin móvil en poco tiempo, y hemos de tenerlo en cuenta.

Aplicaciones mágicas

Como comentábamos en el apartado de malware, aprovechando el tirón del juego, los malos también han publicado “aplicaciones mágicas” relacionadas que si las instalas, ofrecen la posibilidad de robar los Pokémon de otros usuarios, subirlos de nivel, incrementar el nivel del entrenador, obtener más monedas, manipular la posición GPS, etc. Lo que los usuarios deben saber es que estas aplicaciones están diseñadas para robarnos información de nuestro móvil, que puede ir desde el robo de la cuenta de Google hasta la del Banco.

Esta estrategia de engaño no es nada nueva, ha pasado con muchos otros servicios y aplicaciones de moda,Facebook de colores, videollamadas Whatsapp, etc. y era de esperar que sucediera también con Pokémon GO, debido a su éxito.

 ¿Cómo prevenir todos los problemas mencionados?

En cuanto a los consejos tecnológicos, los más importantes son los siguientes:

  • Descargar la aplicación sólo de los mercados de aplicaciones oficiales.
  • Limitar al máximo los permisos que concedemos a las aplicaciones, y si no nos convencen los que solicita, mejor no instalarlas.
  • Configurar la opción de solicitar contraseña al realizar pagos desde el móvil.
  • Cuando no estemos usando la app, desactivar el GPS.
  • Para ahorrar consumo de datos, mientras se usa el juego se aconseja no usar otros servicios con conexión como: correo, Facebook, Whatsapp, etc. o bien maximizar el uso de wifi cuando se pueda, evitando riesgos si hacemos uso de wifis públicas.
  • Para ahorrar batería, apagar wifi, Bluetooth, bajar el brillo, cerrar aplicaciones en segundo plano… o disponer de una buena batería externa. El modo “ahorrar batería” del juego no es mágico.

Otros consejos, que aunque no están relacionados directamente con ciberseguridad, también son importantes aplicar:

  • Conducir nunca es compatible con jugar.
  • Pongamos cuidado cuando vayamos paseando y jugando. ¡Párate antes de cazar un Pokémon!
  • Ojo a determinadas zonas, donde el paso está prohibido o no aconsejado.

Disfrutad de un juego que os obligará a moveros de verdad, pero tened siempre presente los consejos, prevenir es mejor que curar.

Fuente:

osi.es

agosto 10th 2016

Arquitectura del software y sus beneficios

Número de lecturas: 345
{lang: 'es-419'}

¿Qué es la arquitectura?

La RAE define la arquitectura como:

1. f. Arte de proyectar y construir edificios.
2. f. Diseño de una construcción.

Aplicándolo al mundo del desarrollo de software podríamos redefinir arquitectura del software como:

1. f. Arte de proyectar y construir aplicaciones informáticas.
2. f. Diseño de una aplicación informática.

La definición que le damos a arquitectura viene del mundo de la construcción pero viene a significar lo mismo en nuestro mundo, solo que nosotros no construimos edificios, construimos software.

Una arquitectura define la forma de trabajar en un sistema, como construir nuevos módulos, pero también debe dejar intuir el tipo de aplicación que describe. Tal como comenta Uncle Bob, si mostráramos un dibujo arquitectónico de una iglesia o de un piso, simplemente con ver la forma que tiene ese dibujo podemos intuir que tipo de edificio está proyectando. Así pues, si observamos nuestro dibujo arquitectónico de software deberíamos de poder intuir qué tipo de aplicación va a ser construida. No es lo mismo una aplicación que controla un hospital que una aplicación de un cajero automático, cada una tendría un dibujo arquitectónico distinto.

Sin embargo, el dibujo arquitectónico en la construcción no deja claro los materiales con los que está hecha, así mismo en el dibujo arquitectónico de nuestro sistema no deberíamos dejar escapar detalles de nuestra implementación.

Así pues, considero el dibujo arquitectonico en un proyecto de software la propia estructura de modulos y carpetas o paquetes en el caso de Java o cualquier añadido que ayude a expresar la intención de nuestro sistema sin expresar el cómo está hecha.

Uncle Bob además define una serie de “arquitecturas limpias” que tienen una serie de objetivos en común:
1. Independiente de los frameworks. La existencia de esta forma de construir cosas en el sistema no depende de un framework.
2. Testable. Tu arquitectura hace que tu código pueda ser testado.
3. Independiente de la UI. Tus reglas de negocio no se ven alteradas por un requerimiento de UI, cuando desarrollas una funcionalidad nueva es la UI la que se adapta a tus reglas de negocio y nunca al revés.
4. Independiente de la base de datos. Puedes cambiar el motor de persistencia ya que tus reglas de negocio no son dependientes de la implementación concreta de la base de datos sino que es la base de datos la que se adapta a estas reglas.
5. Independiente de cualquier componente externo. Se aplica la misma regla descrita en la base de datos pero relacionada a componentes externos así como integraciones con otros sistemas, librerías, etc…

Si una arquitectura cumple estos objetivos podría entrar en el grupo de arquitecturas limpias.

Casos de uso

Un caso de uso es una acción que un usuario o agente externo realiza en nuestro sistema. Se nombran siempre con un verbo + nombre. Si estuviéramos desarrollando una aplicación en la que se venden productos, ListarProductos sería un nombre válido así como ComprarProducto.

Una manera común de identificar la intención de nuestro sistema es modelarlo en base a sus casos de uso. Son la forma de acceder a las reglas de negocio de nuestra aplicación, por lo tanto podríamos decir que representan la parte pública del dominio de nuestra aplicación. Al ser la parte pública hacen de entrada/salida de datos al dominio.

Los casos de uso nos ayudan a expresar con un lenguaje más natural las acciones posibles que nuestro sistema puede realizar y de esa forma listan las funcionalidades del mismo. Un listado de los casos de uso ordenados por funcionalidad nos ayudará a saber de qué trata la aplicación con la que estamos trabajando. Por ejemplo, en Java, si distribuimos los casos de uso separados por paquete de funcionalidad, nos dará esa visión de dibujo arquitectónico de la que hablábamos al inicio del post.

Para hacer la acción hablarán con elementos internos de nuestro dominio tales como servicios u objetos de modelo ricos para que mediante la colaboración de los mismos resuelvan la acción.

Estos casos de uso son pues el elemento de entrada de nuestra aplicación y controlan la secuencia de pasos de los elementos internos con los que colaboran. Para resolver un caso de uso como ComprarProducto quizá en nuestro sistema los datos de entrada tengan que pasar por un objeto validador y en el caso de que los datos sean válidos guardar ese objeto en persistencia, por lo que esos dos pasos estarían correlados en el caso de uso.

Secuencia de caso de uso

Reglas de negocio

Una regla de negocio es un requerimiento del encargado en definir cómo funciona una aplicación, en Agile usamos el rol de Product owner. Definen el comportamiento de nuestro sistema y cómo reacciona a las acciones por parte de un usuario o un agente externo si tuviera que interactuar con otros sistemas. Las reglas de negocio aportan valor al sistema que estamos construyendo.

Como hemos descrito hasta ahora nuestras reglas de negocio son el núcleo de nuestra arquitectura, todo depende de estas reglas, ya que al fin y al cabo creamos software para ofrecer una solución a una una necesidad.

¿Por qué es tan importante separar nuestras reglas de negocio? El software evoluciona, los frameworks, base de datos, librerías que usamos son solo herramientas con las que construimos un sistema, pero tal como van evolucionando, la forma de usarlas cambia o incluso son reemplazadas por unas mejores, será mucho más fácil reemplazar estas nuevas herramientas en nuestro sistema si están lo más aisladas posible.

Existe una única regla para usar una arquitectura limpia, la regla de dependencias. Esta regla expresa que la dependencia entre componentes de nuestro sistema debe de ser desde los detalles de implementación a nuestro dominio y nunca dejar que nuestro dominio conozca estos detalles. Esta es la herramienta que tenemos para aislar lo que realmente aporta valor a nuestra aplicación de la implementación o tecnologías que usamos.

Pero tu Product Owner difícilmente te va a explicar exactamente las reglas de su negocio, seguramente exprese lo que espera encontrar o cómo va a reaccionar la aplicación en determinado caso, somos nosotros los desarrolladores los encargados de traducir su lenguaje y extraer las reglas de negocio y modelar la aplicación en base a lo que llamamos un modelo de datos de dominio, siendo el dominio el negocio del que estamos hablando.

Este arte de transformar una especificación en algo tangible en el desarrollo del sistema es difícil y no tienes que preocuparte de que no sea perfecto en un primer momento ya que es algo que debería estar en continua evolución según se va ganando conocimiento sobre el dominio, a esto lo llamamos refinamiento continuo.

Para hacer este refinamiento continuo tenemos que cambiar partes de nuestro sistema para que reflejen claramente la intención. Un libro que te puede ayudar mucho a entender mejor el modelado del dominio de una aplicación y enseña ciertos “patrones” de como modelar objetos de dominio es Domain Driven Design de Eric Evans. Un libro que cualquier desarrollador debería leer.

Si cambiamos partes de nuestro sistema, deberíamos tener la seguridad de que estamos haciendo cambios sin dañar otras, para eso necesitamos que nuestra arquitectura sea testable.

Testing

Toda esta separación entre reglas de negocio y el resto de partes de nuestro sistema hacen que nuestros componentes sean testables ya que comunicamos las piezas que componen este puzzle con abstracciones. Las abstracciones son nuestros aliados a la hora de componer estas piezas ya que nos proporcionan 2 claras ventajas: dar significado semántico a los colaboradores de una clase e invertir la dependencia para poder mockear un colaborador en test.

Esta inversión de dependencias nos permite también cambiar el detalle de implementación de una clase lo que hace que nuestra arquitectura sea independiente de las herramientas que mencionábamos previamente ya que hay que distinguir entre el qué hacer (abstracción) y el cómo hacerlo (implementación).

Independiente de agentes externos

Nuestra aplicación, como hemos comentado, debe ser independiente de agentes externos tales como frameworks, bases de datos, UI, APIs externas u otros sistemas que no tenemos control. Para cumplir con esta regla debemos tener claro que cualquier agente externo puede ser dañino, ya que en cualquier momento puede ser reemplazado por otro que pueda cumplir con la misma misión en nuestro sistema.

Todo framework o librería que nos haga desarrollar código utilizando formas que no son standards en el lenguaje que estamos desarrollando deberían ser cubiertas con una abstracción, de forma que si en un futuro queremos cambiar esa librería por otra o incluso implementarlo nosotros mismos lo podamos hacer solo haciendo un cambio en cómo se crea la implementación para esa abstracción

Esto es aplicable también a otros agentes externos tales como bases de datos, que solo cumplen una misión en nuestro sistema, que es persistir objetos. Nuestro sistema solo está interesado en persistir el objeto X pero no en la forma en la que está implementado. Por eso mismo una abstracción nos da también semántica a nuestro código, porque la abstracción en este caso se llamaría XDataStorer y podría ser implementada de múltiples formas dependiendo de la tecnología que queramos usar.

Conclusión

Implementar una arquitectura nos ayuda a entender mejor de qué trata nuestro software, a centrarnos en el dominio de nuestra aplicación, que es el valor real y que al fin y al cabo es la razón que nos lleva a escribir software. Implementar un modelo rico basado en nuestro dominio hace que todos los miembros del equipo tengan el mismo vocabulario y fuerza a ponerle nombres a conceptos por lo que facilita el entendimiento. Nos facilita también que nuestro código sea más mantenible, testable y en consecuencia nos ayuda a cumplir con los principios SOLID.

Fuente:

devexperto.com