Daniel Maldonado

martes, 28 de junio de 2016

Como iniciar un proyecto en #Symfony3

Symfony continúa siendo uno de los framework de programación en PHP5 más utilizados en estos últimos años, no solo por lo simple que es instalarlo o por las características que tiene, sino también por la comunidad de programadores que contribuyen todo el tiempo a ser un mejor producto.

Figura 1: Logo del framework Symfony

El día de hoy, vamos a instalar rápidamente #Symfony3 y para ellos lo primero que se necesita es contar con su instalador, por ello ejecutamos los siguientes comandos:

$ sudo curl -LsS https://symfony.com/installer -o symfony
$ sudo chmod +x symfony 

De esta manera, es posible ejecutar el instalador sin ningún parámetro y obtener el siguiente resultado.

Figura 2: El instalador de Symfony

A día de hoy, se encuentra la versión actualizada de Symfony 3.1 y es la que casualmente vamos a instalar en este pequeño laboratorio.

Para ello ejecutamos:

$ sudo ./symfony new blog 3.1

Figura 3: Inicio en el proyecto y la descarga de Symfony 3.1

Figura 4: Fin de la descarga de Symfony 3.1

Luego, tal y como indica la documentación, a continuación encendemos el servidor web propio de Symfony e ingresamos a la web de ejemplo.

$ cd blog
$ php bin/console server:run

Figura 5: Inicio del servidor web de Symfony

Figura 6: Ingreso desde un navegador a http://127.0.0.1:8000

Simple y con este par de comandos ya es posible comenzar a trabajar con Symfony3

Saludos!

viernes, 6 de mayo de 2016

Solución a Got error: 145 de mysqldump

Para hoy les voy a mostrar una solución para un problema clásico en MySQL a la hora de realizar la migración de las Bases de Datos.

Figura 1: Solución a Got error: 145 de mysqldump

Hace un par de días me tocó ejecutar una migración programada de un par de web con sus correspondientes bases de datos, con respecto a los archivos no hay dificultad alguna para realizar las copias de un servidor a otro, pero cuando utilicé mysqldump me encontré con el siguiente error:

$ mysqldump -h localhost -u usuario -p db_joomla > db_joomla_bck.sql

mysqldump: Got error: 145: Table './db_joomla/jos_session' is marked as crashed and should be repaired when using LOCK TABLES

Este error nos indica que la tabla jos_session, para este ejemplo, se encuentra con una marca que le indica que se encuentra con errores, quizás de inconsciencia de datos.

La solución es muy simple y para ello hay que ejecutar las primitivas CHECK TABLE y REPAIR TABLE de la siguiente manera:

$ mysql -h localhost -u root -p
Enter password: ******

mysql> use db_joomla;
mysql> CHECK TABLE jos_session;
mysql> REPAIR TABLE jos_session;

Con esto, el problema tiene que estar resuelto y es posible continuar con los respaldos correspondientes.

Saludos!

martes, 12 de abril de 2016

Nuevo #WordPress 4.5 "Coleman"

Hace unos minutos el equipo de desarrolladores de WordPress anunció el lanzamiento de una nueva versión 4.5 llamada "Coleman" en honor al saxofonista de jazz Coleman Hawkins.

Figura 1: Nuevo WordPress 4.5 "Coleman"

Entre las mejoras destacadas en la portada de la nota, indica una importante mejora en la edición de enlaces y el texto en general, algunos accesos directos en el formato de texto y a la hora de personalizar el estilo y diseño.



Todo este trabajo fue dirigido por Mike Schroder y junto a la ayuda de más de 277 colaboradores que sin duda van a dejar una excelente impresión con los nuevos resultados para WordPress.

Es una buena oportunidad para comenzar a probar las mejoras y actualizar las plataformas.

Saludos!

Enlace | WordPress 4.5 "Coleman"

martes, 1 de marzo de 2016

#OWASP para #Programadores

En estos momentos, me considero un #Programador aficionado y un profesional en la Administración de Sistemas Operativos GNU <3, sin embargo considero que muchos programadores que conozco tienden a repetir muchos problemas y hoy me gustaría platicar un poco más de ello.

Figura 1: OWASP para Pogramadores

Vamos a iniciar por el principio.

¿Qué es OWASP?


OWASP (acrónimo de Open Web Application Security Project, en inglés ‘Proyecto abierto de seguridad de aplicaciones web’) es un proyecto de código abierto dedicado a determinar y combatir las causas que hacen que el software sea inseguro. La Fundación OWASP es un organismo sin ánimo de lucro que apoya y gestiona los proyectos e infraestructura de OWASP. La comunidad OWASP está formada por empresas, organizaciones educativas y particulares de todo mundo. Juntos constituyen una comunidad de seguridad informática que trabaja para crear artículos, metodologías, documentación, herramientas y tecnologías que se liberan y pueden ser usadas gratuitamente por cualquiera.

¿Que les parece? ... Genial! Entonces yo les propongo hacer uso de todas estas referencias aportada por tantos profesionales y que en definitiva nos va ayudar a tener productos y servicios más confiables, seguros, etc.

No importa la tecnología que utilices o el lenguaje con el que estás acostumbrado a programar. Lo más importante es aplicar estas recomendaciones y saber que existen, que alguien ya solucionó ese problema o tiene la intenciones de mejorarlo.

Por ello, es posible evitar tropiezos muy groseros, nuevamente haciendo uso de estas recomendaciones, uno como Programador no necesita conocer de todos los fallos y vulnerabilidades que un proyecto puede tener (de ser así, no les gustaría programar }:O) pero ayuda mucho con saber simplemente de la existencia de los riesgos que se cuentan.

Entonces, a partir de ahora les propongo indagar un poco más sobre OWASP aplicado a la tecnología que utilizamos, desde hace tiempo que me dedica al pentesting y una y otra vez los problemas son recurrentes y creanme que no hace falta recorrer el TOP 10 de OWASP, simplemente conocer un par de técnicas dirigidas y lograr saltarse controles de seguridad.

Los fallos son recurrente y OWASP TOP 10 a variado muy pocas veces en estos últimos años, la diferencia lo hacemos los que intentamos estar un paso más adelante de aquellas personas que intentan saltearse nuestros controles.

Saludos!

Enlace | Página oficial de OWASP

martes, 16 de febrero de 2016

Si te gusta la informática, estas condenado a estudiar de por vida

Ya iniciamos el 2016 y les voy a comenzar a dejar algunas reflexiones y comentario que me gustaría compartir con todos ustedes.

Hoy mientras escribo estas líneas, y veo desde mi escritorio a mi pequeña jugando con sus bloques, creando historias e imaginando aventuras, me puse a pensar en todas los proyectos que tengo que ir cerrando mientras voy investigando y realizando mis pruebas de conceptos.

Figura 1: Si te gusta la informática, estas condenado a estudiar de por vida

Lo primero que se me cruzó por la cabeza es pensar lo rápido que pasa el tiempo, y cómo el día a día nos lleva a las corridas y para eso lo mejor es tratar de mantener todo muy bien planificado o por lo menos algo organizado.

De todas maneras hoy no vamos a hablar de organización sino sobre otro tema: "Si te gusta la informática, estas condenado a estudiar de por vida".

Alguna vez se pusieron a pensar esta afirmación? Pues créanme que en varias oportunidades lo pensé y realmente todos los días me doy cuenta que es así en el mundo de la informática.

Pero si realmente les apasiona lo que están haciendo, estoy seguro que van a camuflar el "estudiar" por "aprender", que sin duda es algo un poco más motivador y que invita a un inevitable crecimiento.

Yo no soy de dar muchos consejos, pero si ustedes se están introduciendo al mundo de la informática en forma profesional o estudiando alguna carrera relacionada a la informática, por favor créanme que van a estar condenados a estudiar de por vida.

Y es que es inevitable, la informática es así, independientemente a la rama que se dediquen, Programadores, DevOps, SysAdmin, Networking, Security, etc "están condenados a estudiar de por vida". Lo que hoy es una buena solución a implementar, mañana estoy seguro que surgirá una mejor y nuevamente tenemos que dejar un esfuerzo grande para comprenderla, aplicarla y revisar los casos de estudio.

Cuando esto se transforma en un gusto personal, esa "condena" se transforma en necesidad y aquella pasión y amor por saber un poco más todo los días, transforma el estudio en aprendizaje y de esta forma podríamos cambiar el titulo de este post para que quede más elegante.

"Si te apasiona la Informática, vas a sentir la necesidad de aprender de por vida".

Saludos!

martes, 5 de enero de 2016

Se encuentra disponible la actualización en #Django 1.9.1 y 1.8.8

El pasado 2 de Enero, el proyecto Django inició el año con dos importantes actualizaciones para las ramas 1.9.x y 1.8.x

Figura 1: Actualización en Django 1.9.1 y 1.8.8

Es por ello que ya se encuentra disponible las versiones correspondientes 1.9.1 y 1.8.8

Correcciones en la versión 1.9.1


  • Fixed BaseCache.get_or_set() with the DummyCache backend (#25840).
  • Fixed a regression in FormMixin causing forms to be validated twice (#25548, #26018).
  • Fixed a system check crash with nested ArrayFields (#25867).
  • Fixed a state bug when migrating a SeparateDatabaseAndState operation backwards (#25896).
  • Fixed a regression in CommonMiddleware causing If-None-Match checks to always return HTTP 200 (#25900).
  • Fixed missing varchar/text_pattern_ops index on CharField and TextField respectively when using AlterField on PostgreSQL (#25412).
  • Fixed admin’s delete confirmation page’s summary counts of related objects (#25883).
  • Added from __future__ import unicode_literals to the default apps.py created by startapp on Python 2 (#25909). Add this line to your own apps.py files created using Django 1.9 if you want your migrations to work on both Python 2 and Python 3.
  • Prevented QuerySet.delete() from crashing on MySQL when querying across relations (:ticket`25882`).
  • Fixed evaluation of zero-length slices of QuerySet.values() (#25894).
  • Fixed a state bug when using an AlterModelManagers operation (#25852).
  • Fixed TypedChoiceField change detection with nullable fields (#25942).
  • Fixed incorrect timezone warnings in custom admin templates that don’t have a data-admin-utc-offset attribute in the body tag. (#25845).
  • Fixed a regression which prevented using a language not in Django’s default language list (LANGUAGES) (#25915).
  • Avoided hiding some exceptions, like an invalid INSTALLED_APPS setting, behind AppRegistryNotReady when starting runserver (#25510). This regression appeared in 1.8.5 as a side effect of fixing #24704 and by mistake the fix wasn’t applied to the stable/1.9.x branch.
  • Fixed migrate --fake-initial detection of many-to-many tables (#25922).
  • Restored the functionality of the admin’s list_editable add and change buttons (#25903).
  • Fixed isnull query lookup for ForeignObject (#25972).
  • Fixed a regression in the admin which ignored line breaks in read-only fields instead of converting them to <br> (#25465).
  • Fixed incorrect object reference in SingleObjectMixin.get_context_object_name() (#26006).
  • Made loaddata skip disabling and enabling database constraints when it doesn’t load any fixtures (#23372).
  • Restored contrib.auth hashers compatibility with py-bcrypt (#26016).
  • Fixed a crash in QuerySet.values()/values_list() after an annotate() and order_by() when values()/values_list() includes a field not in the order_by() (#25316).


Correcciones en la versión 1.8.8


  • Fixed incorrect unique_together field name generation by inspectdb (#25274).
  • Corrected __len query lookup on ArrayField for empty arrays (#25772).
  • Restored the ability to use custom formats from formats.py with django.utils.formats.get_format() and the date template filter (#25812).
  • Fixed a state bug when migrating a SeparateDatabaseAndState operation backwards (#25896).
  • Fixed missing varchar/text_pattern_ops index on CharField and TextField respectively when using AlterField on PostgreSQL (#25412).
  • Fixed a state bug when using an AlterModelManagers operation (#25852).
  • Fixed a regression which prevented using a language not in Django’s default language list (LANGUAGES) (#25915).
  • django.views.decorators.cache.never_cache() now sends more persuasive headers (added no-cache, no-store, must-revalidate to Cache-Control) to better prevent caching (#13008). This fixes a problem where a page refresh in Firefox cleared the selected entries in the admin’s filter_horizontal and filter_vertical widgets, which could result in inadvertent data loss if a user didn’t notice that and then submitted the form (#22955).
  • Fixed a regression in the admin which ignored line breaks in read-only fields instead of converting them to <br> (#25465).
  • Made loaddata skip disabling and enabling database constraints when it doesn’t load any fixtures (#23372).
  • Fixed a crash in QuerySet.values()/values_list() after an annotate() and order_by() when values()/values_list() includes a field not in the order_by() (#25316).
No se olviden de mantener su framework y proyectos actualizados a las últimas versiones estables, si no recuerdas como, aquí de enlazo la forma más práctica de actualizar Django.

Saludos!

Entradas populares