martes, 15 de julio de 2014

Como configurar un proyecto de Silex y Git

Por estos últimos días, comencé a prestarle mucha atención a las cosas que está creando Silex, este microframework que se deriva de los componentes de Symfony2.


La razón es muy simple, crear aplicaciones web a menor escala y con requerimientos mínimos, hoy por hoy no hace falta contar con un framework que lo tiene todo y que prácticamente no se utiliza nada.

La idea siempre es, hacer cosas de calidad con herramientas que se encuentren en la vanguardia de la tecnología como es la utilización de MVC.

A estas altura es bueno saber que ya no comentamos las bondades de Git, simplemente seguimos sumando proyectos, por que sabemos lo indispensable que resulta contar con este sistema de control de versiones distribuido.

El desafío de hoy es comenzar a controlar nuestro código por medio de Git, que hace un par de días creamos con Silex.

Si fuimos atentos, vamos a notar que el proyecto que descargamos fabpot/silex-skeleton ya incorpora un archivo oculto .gitignore para dejar pasar por alto aquello que no nos va a interesar en el proyecto

.gitignore


/vendor/
composer.lock

Ahora lo único que nos va a quedar realizar es la inicialización de Git

$ git init

$ git add .

$ git commit -m “Inicio de mi proyecto en Silex.”

Al buen estilo Silex, simple, cómodo y fácil.

Saludos!

jueves, 10 de julio de 2014

Como instalar Silex por primera vez

Hace ya un tiempo, escribí en el blog algunas líneas sobre Silex, este microframework de PHP basado en varios componente de Symfony2. Ahora que estoy con algunos proyectos web, no tan complejos, decidí que es la oportunidad para comenzar de una buena vez con Silex.


Uno que está acostumbrado a utilizar Symfony2 lo primero que puede llegar a hacer es decargarse el código fuente desde el sitio oficial o incluso desde GitHub y comenzar a jugar. Dejenme decirles que para este caso y solo para este caso, no me funcionó.

Si es que recién nos estamos iniciando en Silex, como es mi caso, cuando descomprimimos el archivo que descargamos desde el sitio oficial, no encontramos ninguna estructura con la que nos podríamos guiar, por lo cuál es bastante frustrante dar el primer paso.

Por eso, Javier Eguiluz, en una de sus tantas conferencias impartidas dio un tips importantísimo. Lo mejor que podemos hacer para iniciarnos con Silex es descargar un esqueleto creado por Fabian Potencier con una estructura más guiada y un clásico ejemplo.

Esto lo podemos hacer de la siguiente manera:

Primero, si es que no tenemos composer, lo podemos descargar así

$ curl -sS https://getcomposer.org/installer | php

Ahora que ya contamos con composer, podemos instalar el siguiente proyecto:

$ ./composer.phar create-project fabpot/silex-skeleton /var/www/silex


Este comando va a tardar algunos minutos, dependiendo de la conexión a Internet, Lo que va a realizar es a descargar todas las dependencias necesarias en el directorio /var/www/silex o cualquier otro que le especifiquemos, para que este skeleton pueda funcionar sin ningún problemas.


Esto nos va a servir de base para crecer y entender con un ejemplo práctico todo el potencial de Silex y sin duda comenzar a crear sobre este magnífico microframework que desde hace tiempo promete y mucho.

Saludos!

lunes, 30 de junio de 2014

Como renombrar una rama en Git


Esto es algo que si estás acostumbrado a utilizar Git como tu sistema de control de versiones te puede pasar en cualquier momento. Ya sea por que el proyecto necesita que renombres la rama en la que estas trabajando, por que su nombre es muy extenso o simplemente necesitas más descripción de la que está.

Por cualquiera de estas causas, siempre está bueno saber como renombrar una rama en la que estas trabajando dentro de tu proyecto en Git.

Desde la consola de comandos, antes de ejecutar cualquier cosa nueva, siempre esta muy bueno remontarse a la documentación que ya tenemos

$ man git-branch

dentro de la documentación lean lo que les permite la opción ( -m ) que es justamente lo que necesitamos, mover o renombrar un branch

Ahora si, para modificar el nombre de un branch, escribimos lo siguiente:

$ git branch -m nuevo_nombre

Espero que este pequeño truco les sea de mucha utilidad.



Saludos!

viernes, 27 de junio de 2014

PageSpeed Insights

PageSpeed Insights, se trata de una herramienta on-line para tener una noción de la velocidad de carga de nuestro proyecto web, además nos brinda información de como mejorar esa velocidad y optimizar los recursos para establecer una mejor puntuación.


Realmente es muy interesante tener un panorama general con los ojos que mira el "Rey de Internet", y ver de que manera podemos mejorar cada componente, desde optimizar las imágenes hasta la compresión de archivos CSS o JS, incluso tocando temas y recomendaciones referentes al UX (Experiencia de Usuario).

El servicio de PageSpeed Insights es totalmente gratuito y sin duda podemos aprovechar las bondades de este tipo de recursos para mejorar nuestras optimizaciones y pensar siempre en el usuario final.

Saludos

Enlace | PageSpeed Insights

martes, 17 de junio de 2014

El Software Libre y la Educación

Hace un par de días mi amigo +Jorge J. Riera  publicó en su muro de Facebook un video de nada más y nada menos que Richard Stallman hablando sobre dos temas que se encuentran muy relacionados "El Software Libre y la Educación"

Hace mucho que no escuchaba a RMS hablando con sus ejemplos y analogías a la vida cotidiana, lo importante para los niños que es aprender sobre estas tecnologías y la forma en la que lo podemos acompañar a promover el movimiento del software libre.

Les comparto el video para que llegue a todas partes.


Saludos!

jueves, 5 de junio de 2014

Seguridad en el desarrollo web backend

Tips sobre seguridad en el mundo del desarrollo del lado del servidor, aplicable a PHP y otros lenguajes de programación.

Desde desarrolloweb.com y junto a nuestra amiga Eugenia Bahit nos deja toda su experiencia en el área de la programación, desarrollo web y seguridad



Saludos!

lunes, 26 de mayo de 2014

Taller de Seguridad en WordPress

Desde hace un tiempo decidí dedicarme por completo a conocer, aprender y estudiar las diferentes formas de asegurar el CMS WordPress al momento de dejarlo en un servidor en Producción.

El producto de toda esa investigación dio como resultado una herramienta escrita en Python llamada WPHardening v1.2 con una cantidad operaciones que se pueden aplicar, de tal manera que disminuye la superficie de exposición del sistema, aplicando los principios básicos de Hardening.

Hoy en día continúo desarrollando la herramienta, implementando varias mejoras para las próximas versiones, pero además quería aprovechar para invitarte al Nuevo lanzamiento del Taller de Seguridad en WordPress.


Se trata de un completo Taller basado en 9 Módulos que va desde lo más básico, como la instalación de WordPress, hasta aplicar todas las medidas de seguridad, alerta y plan de contingencia ante los posibles incidentes.

Desde ahora puedes reforzar la seguridad de TU sitio web

+ Vas a ser capaz de asegurar tu sitio web completo con solo lo que vas a aprender en este taller.

+ Vas a aprender a utilizar herramientas que te permiten fortificar la seguridad de tu sitio web en general.

+ Vas a aprender y poner en práctica nuevas políticas de actualización.

+ Vas a ser capaz de implementar políticas para realizar y restaurar los backups de tu sitio.

Además de una serie de consejos útiles para poner en práctica rápidamente.

CONTENIDOS DEL TALLER


1. INTRODUCCIÓN A LA SEGURIDAD DE WORDPRESS
2. INSTALACIÓN DE WORDPRESS
3. CONFIGURACIÓN BÁSICA DE SEGURIDAD
4. INSTALACIÓN DE PLUGINS
5. CONTROL DEL BLACK SEO
6. POLÍTICAS DE ACTUALIZACIÓN DE WORDPRESS
7. ASEGURANDO LA BASE DE DATOS
8. COPIAS DE SEGURIDAD
9. POLÍTICAS DE RESTAURACIÓN ANTE DESASTRES

Taller Online a distancia, clases semanales 100% prácticas, por medio de video llamada y consultas por correo electrónico, materiales de estudio, etc.


Saludos!

martes, 13 de mayo de 2014

Nuevos diseños web con Pure

Yo no se ustedes, pero desde que conocí los Framework CSS la verdad que la labor para realizar formularios, tablas de consultas, botones, etc se hicieron mas simple :)


Hoy les quería presentar una librería llamada Pure, y mas que una librería es todo un framework responsive que nos  a a ayudar a crear la experiencia de usuarios con nuestra aplicación web.

Simple, rápido y liviano, tres factores indispensables para implementarlo y hacer uso de él en todo momento.

Ahora tus vistas pueden srr mas atractiva, tomando como idea el Botstrap de twitter es posible hacer uso de varios componentes que Pure nos tiene prepadado, podemos utilizar Grids, Forms, Button, Tables, Menus, personalizar nuestros estilos e incluso descargar algunos Layouts que Pure tiene de ejemplo.


De esta pequeña reseña solo queda descargarlo y comenzar a probar este nuevo Framework CSS modular llamado Pure.

Saludos!

Enlace | purecss.io

lunes, 5 de mayo de 2014

Frameworks PHP

Hay una realidad en el mundo web de PHP que repercute directamente en el mercado laboral de los Developer y que tiene que ver con el presente y el futuro de PHP.


Desde hace un tiempo largo, PHP ha tenido la suerte de estar acompañado por una gran cantidad de Frameworks, muchos de ellos basados en la arquitectura MVC y que de esa forma mantienen viva la llama del lenguaje, todavía haciéndolo más competitivo frente a otras alternativas como Django de Python o Ruby on Rails de Ruby.

Entre los Frameworks más populares para PHP podemos encontrar:



viernes, 2 de mayo de 2014

Cuánta información podemos guardar en un commit de Git

Todos los que utilizamos Git como nuestro sistema de control de versiones para nuestros proyectos, tenemos la misma intriga de saber, cuánta información almacenar entre un commit y otro.


Hasta lo que tengo entendido no existe ninguna limitación en cuanto a archivos y cantidad de información almacenada, pero sin duda creo que es mas una cuestión de orden y por que no de workflow de nuestro proyecto.

En mi caso particular, busco la manera entre commit y commit, solo corregir o agregar una función, crear o eliminar un archivo y por otro lado intento agregar bastante descripción que acompañe o resuma el commit.

Sin duda almacenar un historial de cambios de tu proyecto es una estrategia que deberíamos pensar e implementar, eso nos puede mostrar un historial en el tiempo de todos los cambios que se fueron dando de versión a versión.

Para poder definir como estructurar los commit yo les recomiendo una previa planificación, no tanto en factor de los tiempos sino más bien en función de las mejorar u optimizaciones.

Por ejemplo, si quiero implementar una nueva funcionalidad global como el almacenamiento de archivos log en nuestro software, podemos tomar en cuenta la cantidad de clases que componen el mismo, o los archivos y de allí ir planificando nuestros commits. Un commit por cada implementación en las clases o un commit por la revisión y mejora en un archivo. etc.

El potencial de Git es fantástico y si a esta estrategia de commit la complementamos con el uso de branch y dentro de GitHub hacemos uso de los Issues y Milestones. Pero de eso vamos a hablar más adelante.



Me gustaría que me cuenten sus estrategias a la hora de ejecutar los commits dentro de sus proyectos.

Saludos!

jueves, 24 de abril de 2014

FLISoL 2014

Quiero aprovechar esta oportunidad para agradecer a cada uno de los Geek que se acercan hasta el blog y nos dejan sus visitas, comentarios, Likes y +1 ya que hoy tu visita tiene un sabor distinto, hoy superamos las 100.000 visitas y ese es un pequeño paso pero a la vez algo muy gratificante.

Ahora si, pasamos a lo que se viene este Sábado 26 de Abril del 2014, el 10mo aniversario del FLISoL 2014, el Festival Latinoamericano de Instalación de Software Libre el evento esperado para difundir tecnologías Libre, donde la comunidad se reúne en simultaneo para vivir una fiesta de conocimiento e intercambio de información.


FLISoL se celebra en toda Latinoamerica, si no estás enterado, averigua en tu LUG o universidad más cercana que seguramente se está organizando uno muy cerca de donde vives.

Este año, voy a tener la suerte de estar dando una conferencia sobre ownCloud y CloudComputing gracias a la organización de la Asociación Civil “Sociedad Libre” y “Mentes Libres” que de forma muy cordial me invitaron.

El FLISoL 2014 se llevará a cabo el sábado 26 de abril en el Anfiteatro de la Facultad de Ingenieria en San Salvador de Jujuy - Argentina desde las 9:00hs hasta las 18:00hs.


Cronograma


9:00 a 9:30 Acreditaciones
9:30 a 10:00 Acto de Apertura
10:00 a 10:30 "Formato Libre" (Daniel Ome, Jujuy)
10:30 a 11:15 Construyendo nuestra propia nube con OwnCloud (Daniel Maldonado , Jujuy)
11:15 a 11.30 Coffe Break
11:30 a 12:15 "Edutainment" Nuevas Perspectivas con Videojuegos en el Aula(Jose Guerra Prado, Bs As)
12:15 a 13:00 Uso de Plataforma con WIKIPEDIA(Esteban Zarate, Tandil)
13:00 a 15:00 Receso

15:00 a 15:30 Taller de Programacion Web (“El asincronico mundo de node.js”)
15:30 a 16:00 Taller de Aplicaciones Libres (“Aplicaciones libres en entornos privativos”)
16:00 a 17:00 Taller de Implementacion de Videos juegos en el Aula
17:00 a 18:00 Taller de Edición de Wikipedia
15:00-15:00 Taller Instalación de Distribuciones de GNU/Linux
15:00 a 18:00 Entrega de CDs y DVDs con Aplicaciones Libres y
Distribuciones GNU.
18:00 - Entrega de Certificados a los Asistentes

La entrada es totalmente libre y gratuita

Luego les cuento como me fue en la conferencia y les publico todo el material de la presentación.

Saludos!

lunes, 21 de abril de 2014

Lenguajes de Programación

Buenas, mientras me quedo unos minutos probando a apps de Blogger para sistemas Android, me gustaria conversar sobre los Lenguajes de Programación.

Pueden creer, que sigo leyendo post en diferentes blogs intentando poner a pruebas diferente lenguajes, algo que por estos dias me parece bastante absurdo y sin sentido.

La diversidad de lenguaje sumado a la cantidad de plataformas existentes en el mercado, y cuando hablo de plataformas me refiero a los sistemas operativos, tanto en los dispositivos moviles como en el escritorio, hacen que cada uno cubra su espacio de una manera acorde.

Hoy lo que tenemos que buscar es implementar una buena herramienta completa, capas de abarcar la mayor cantidad de caracteristicas. El desafío es conocerla y tener las capacidades para encontrar solución y rápidamente obtener resultados.

No le encuentro mucho sentido comparar PHP, Asp, Ruby o Python, por poner un ejemplo, lo importante es estar convencido de nuestra eleccion y saber todos los pro y contras del lenguaje, sus limitaciones y alcance. De esa forma vamos a poder argumentar con propiedades nuestra elección.

Si queremos defender un lenguaje de programación, mostremos sus verdaderas capacidades, sus casos de éxitos y sus implementaciones reales y no comparemos tanto intentando dejar a su competidor atrás. Siempre es mejor sorprender que estar hablando mal de algo o alguien.
Saludos!

lunes, 7 de abril de 2014

PHP: la manera correcta

Hoy en día existe mucha información anticuada acerca de PHP que guía a nuevos programadores por mal camino, propaga las malas prácticas y código inseguro. PHP: La Manera Correcta es una referencia práctica y fácil de entender, los mejores métodos, estándares de código, enlaces a tutoriales autoritativos alrededor de la Web y lo que los contribuyentes consideran como las mejores prácticas en la actualidad.
No existe una manera canónica de utilizar PHP. Este sitio tiene como objetivo introducir a los nuevos desarrolladores en PHP a algunos temas que tal vez no descubran hasta que es demasiado tarde, y también ofrecer nuevas ideas a los profesionales experimentados sobre aquellos temas que han estado haciendo durante años sin reconsiderar. Este sitio no le dirá que herramientas utilizar, en su lugar le ofrecerá diferentes opciones, cuando sea posible se le explicarán las diferencias de enfoque y casos de uso.
Consideramos este sitio como un documento vivo que se continuará actualizando con más información útil y ejemplos según se hagan disponibles.

Realmente hace mucho tiempo que no leía un documento tan actualizado y con tanto nivel de detalle sobre PHP.

PHP: la manera correcta” ya se encuentra traducida en 13 idiomas distintos y es un proyecto alojado en GitHub ideal para todos los programadores de PHP que desean colaborar.

En esta guía vas a encontrar temas como los Aspectos destacados del lenguaje, Gestión de Dependencias, Buenas prácticas, Inyección de Dependencia, Bases de Datos, Errores y excepciones, Seguridad, Pruebas, Servidores y Despliegue, Caché y otros Recursos.

Me imagino que no te lo vas a perder!

Saludos

Enlace | PHP: la manera correcta

lunes, 24 de marzo de 2014

Comando en Composer


Composer es una gran herramienta que nos permite administrar diferentes librerías en PHP para proyectos en donde se requiere una gran cantidad de ellas, como es el caso de Symfony2 que debe resolver varias dependencias.

Una de las formas de instalar Symfony2 es gracias a la utilización de composer donde descarga de Internet las últimas versiones de las librerías que necesita.

Vamos a aprovechar que nos gusta Symfony2 y que además utilizamos composer para instalarlo. Ahora bien para comenzar a utilizar ejecutemos composer de la siguiente manera:

$ php composer.phar

Luego de un tiempo de tener instalado composer, es posible que necesitemos llevarlo hasta la última versión, y esto lo podemos hacer de la siguiente manera:

$ php composer.phar self-update -v

Para estos casos siempre recomiendo utilizar sus modos verbose (-v) de esa forma van a poder conseguir muchísima información adicional en caso de que exista algún problema.

Siguiendo con los comandos, podemos desplegar una lista de comandos disponibles para composer ejecutando las siguientes opciones:

$ php composer.phar list

domingo, 23 de marzo de 2014

El modelo de negocio detrás del Bootstrap


El Bootstrap sin duda es uno de los frameworks front-end más populares y usados en estos últimos años y es que el mismo mercado, con la cantidad de dispositivos y navegadores web lo requieren y la gente que los usa lo llevó al salón de la fama.

Claro está que detrás de todo software bien realizado, existe un sin fin de modelos de negocios que podemos aprovechar, además, la licencia MIT en el que se encuentra el Bootstrap lo permite legítimamente.

Es allí donde podemos citar como ejemplo a themefores de envato y a {wrap}bootstrap dos compañía que reúnen y convocan a excelentes diseñadores y especialistas en front-end para desarrollar themes, templates y dashboard basados en bootstrap con toda la tecnología HTML5, CSS3, Responsive Designer, jQuery, etc.

{wrap}bootstrap

martes, 18 de marzo de 2014

Workflow en Git

El workflow de Git es la manera en la cuál podemos dar una estructura de commits, branch y fusiones dentro de la etapa del desarrollo de un software. 

De tanto escribir artículos sobre Git, esta sin duda parece ser #7DiasConGit y la realidad es que a medida que más lo usan, más se van a ir dando cuenta de todas las bondades que nos ofrece como programador y administrador de proyectos.


Hoy les quería dejar un enlace sobre el Workflow en Git y esto de estructurar nuestros proyectos al momento de separar las tareas, dividirlos en ramas y posteriormente fusionarlas.

El Workflow requiere un manejo importante de ramas o branch dentro de Git, dejar en claro siertas directrices para tener en cuenta y buscar la mejor forma de ejecutar el proyecto entre los colaboradores que posteriormente van a enviar o impactar sus cambios en el código fuente del repositorio principal.

Existen muchas estrategia como la de tener un branch master donde solo va a apuntar las versiones finales, por otro lado un branch develop y diferentes ramas features donde pueden crear una rama para cada funcionalidad nueva dentro del proyecto, fusionarlas constantemente con develop hasta tener un producto maduro antes de pasar a master.

lunes, 17 de marzo de 2014

Como editar el mensaje de un commit en Git


Cada vez que utilizo Git para realizar el tracking y el control de versiones en un software más estoy convencido de las bondades que brinda a los desarrolladores.

La idea de hoy es aprender como podemos modificar el mensaje que dejamos cada vez que realizamos un commit al cambiar parte del código fuente.

Lo primero que podemos hacer es ver los log para determinar cuáles son los nombres que asignamos a los commits ejecutados, para ello podemos ejecutar:

$ git log --graph --online 

Ahora bien para cambiar el mensaje del último commit, lo podemos hacer de la siguiente manera:

$ git commit --amend -m "Nuevo mensaje del commit."

A este cambio podemos hacerle un push para subirlo a un repositorio principal como puede ser GitHub u otro servidor

$ git push --force

Es posible que necesitemos cambiar el mensaje de varios commits anteriores ya ejecutados y para ello vamos a utilizar el siguiente comando:

$ git rebase -i HEAD~cantidad_commit

en un ejemplo en concreto el comando quedaría:

$ git rebase -i HEAD~3

lunes, 10 de marzo de 2014

Ramas en Git

Este último fin de semana me dediqué a codear un poco en Python, colaborando para un proyecto Software Libre de Seguridad y la verdad que tuve que trabajar bastante con las ramas o branch en Git y la verdad es que estuvo genial.

La idea de hoy es recomendar que si se encuentran desarrollando un software por más grande o pequeño que crean que sea, utilicen un sistema de control de versiones, lo que les va a permitir tener mucha más transparencia en el desarrollo, van a poder tener un log de todos los cambios dentro de sus programas y esto va ya sea si se encuentran trabajando en equipo o solos y una de esas alternativas es Git.

Git es un sistema distribuído para realizar un seguimiento de los cambios que llevamos nosotros y nuestro equipo conforme pasa el tiempo. Una de las características de Git es el uso de branchs o ramas que nos permite organizar nuestro código.


En particular cuando me encuentro desarrollando un sistema, me gusta utilizar branch para aislar alguna nueva funcionalidad de la rama principal o master del desarrollo con el fin de mantener el orden a medida que el software crece.

martes, 4 de marzo de 2014

Como fusionar Symfony2 y Bootstrap

Hoy les quería dejar un How-To de como hago para fusionar Symfony2 y el Bootstrap de Twitter, de esa forma lograr tener unas mejores vistas y hacer uso de estos dos framework fantásticos, por eso para saltear algunos pasos les recomiendo tener descargado Symfony2 y la última versión estable del Bootstrap, ambos totalmente libres y esperando ser usados.

Figura 1: Como fusionar Symfony2 y Bootstrap

Los que les voy a explicar a continuación es la forma que yo utilizo para realizar la integración de estos dos framework, con lo cuál la idea es optimizar las plantillas y reutilizar código para continuar escalando.

Para saltear algunos pasos les dejo los enlaces para instalar Symfony2 en su servidor de pruebas:


Una vez que tengamos todo instalado, vamos a crear un Bundle con sus configuraciones por defectos de forma simple y rápida, para comprender la secuencias de comando les recomiendo leer su ayuda:

$ php app/console help generate:bundle

$ php app/console generate:bundle --namespace=Sistema/BlogBundle


Figura 2: Generación de Bundle

Ahora lo que vamos a modificar es el archivo base.html.twig donde vamos a utilizarlo siempre antes de cargar las plantillas, en él vamos a reemplazar por el siguiente código:

archivo: app/Resources/views/base.html.twig 

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8" />
        <title>{% block title %}Welcome!{% endblock %}</title>
        {% block stylesheets %}{% endblock %}
        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
    </head>
    <body>                                                       
        {% block body %}{% endblock %}                           
        {% block javascripts %}{% endblock %}                 
    </body>
</html>

Ahora vamos a ir al a la estructura del Bundle que creamos, que seguramente se encuentra en src/Sistema/BlogBundle/Resources y copiamos dentro del directorio public/ todo el contenido del bootstrap, osea todo el directorio css, js y fonts.

Figura 3: Directorio public/

Para poder publicar los assets de nuestro Bundle vamos a ejecutar:

$ php app/console assets:install web

Figura 4: Publicar os assets del Bundle

Dentro del directorio views/ del Bundle, vamos a crear un archivo llamado layout.html.twig y que va a contener el siguiente código:

archivo: src/Sistema/BlogBundle/Resources/views/layout.html.twig 

{% extends '::base.html.twig' %}

{% block stylesheets %}
<link href="{{ asset('bundles/sistemablog/css/bootstrap.css') }}" type="text/css" rel="stylesheet">
<link href="{{ asset('bundles/sistemablog/css/bootstrap-responsive.css') }}" type="text/css" rel="stylesheet">
{% endblock %}

{% block body %}
{% endblock %}

{% block javascripts %}
<script type="text/javascript" src="{{ asset('bundles/sistemablog/js/bootstrap.js') }}"></script>
{% endblock %}

Ahora para finalizar lo único que nos queda es editar el archivo de la vista Default/ de la siguiente manera:

archivo: src/Sistema/BlogBundle/Resources/views/Default/index.html.twig

{% extends 'SistemaBlogBundle::layout.html.twig' %}

{% block body %}
<!-- Static navbar -->
    <div class="navbar navbar-default navbar-static-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Project name</a>
        </div>
        <div class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>
<div class="container">
      <!-- Main component for a primary marketing message or call to action -->
      <div class="jumbotron">
        <h1>Hello {{ name }}</h1>
        <p>This example is a quick exercise to illustrate how the default, static and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.</p>
        <p>To see the difference between static and fixed top navbars, just scroll.</p>
        <p>
          <a class="btn btn-lg btn-primary" href="#" role="button">View navbar docs &raquo;</a>
        </p>
      </div>
    </div> <!-- /container -->
{% endblock %}

Figura 5: Pruebas en local sin el template de Bootstrap

Figura 6: Pruebas en local con la template de Bootstrap

Se puede ver que antes de visualizar esta vista extiende los contenidos del archivo layout.html.twig que a su vez se extiende de la estructura base.html.twig esta es una de las grandes ventajas de utilizar Twig en la capa de vista, además de los llamados block que en todos momento hacemos uso.

Como resultado podemos ver como desde las vistas de Symfony2 podemos convocar a las clases que se encuentran en el Bootstrap y hacer que nuestra aplicación adopte todo su estilo.

Ojalá le sea útil este pequeño How-To donde se muestra como integrar el Bootstrap de Twitter con las vistas de Symfony2 de tal forma que nos permita seguir escalando en todas las vistas de la aplicación.

Saludos!

Enlace | Symfony2 y Bootstrap

lunes, 24 de febrero de 2014

htop, una forma diferente de ver los procesos

Si querés conocer un comando más top que top, entonces htop es la mejor alternativa, no solo para poder ver todos los procesos que se encuentran en tu GNU/Linux sino también para administrar todos y cada unos de estos procesos.


Como siempre tomando como base una distribución estable y robusta como Debian podemos instalarlo:

$ apt-get install htop

y ejecutar

$ htop

lunes, 17 de febrero de 2014

Novedades para Symfony2


Buenas noticias para el mundo de Symfony2, hace un par de días, el grupo de desarrolladores encabezados por Fabien Potencier publicó las actualizaciones para Symfony 2.3.10 y 2.4.2 para las diferentes ramas actuales.

Con más de 30 bugs corregidos para estas nuevas versiones sobre las principales librerías  y Bundles que Symfony utiliza:

  • bug #10231 [Console] removed problematic regex (fabpot)
  • bug #10245 [DomCrawler] Added support for <area> tags to be treated as links (shamess)
  • bug #10232 [Form] Fix "Array was modified outside object" in ResizeFormListener. (Chekote)
  • bug #10215 [Routing] reduced recursion in dumper (arnaud-lb)
  • bug #10207 [DomCrawler] Fixed filterXPath() chaining (robbertkl)
  • bug #10205 [DomCrawler] Fixed incorrect handling of image inputs (robbertkl)
  • bug #10191 [HttpKernel] fixed wrong reference in TraceableEventDispatcher (fabpot)
  • bug #10195 [Debug] Fixed recursion level incrementing in FlattenException::flattenArgs(). (sun)
  • bug #10151 [Form] Update DateTime objects only if the actual value has changed (peterrehm)
  • bug #10140 allow the TextAreaFormField to be used with valid/invalid HTML (dawehner)
  • bug #10131 added lines to exceptions for the trans and transchoice tags (fabpot)
  • bug #10119 [Validator] Minor fix in XmlFileLoader (florianv)
  • bug #10078 [BrowserKit] add non-standard port to HTTP_HOST server param (kbond)
  • bug #10091 [Translation] Update PluralizationRules.php (guilhermeblanco)
  • bug #10053 [Form] fixed allow render 0 numeric input value (dczech)
  • bug #10033 [HttpKernel] Bugfix - Logger Deprecation Notice (Rican7)
  • bug #10023 [FrameworkBundle] Thrown an HttpException instead returning a Response in RedirectController::redirectAction() (jakzal)

martes, 4 de febrero de 2014

Listado de usuarios con AWK

AWK es un excelente lenguaje de programación, tan flexible que nos permite procesar datos sobre archivos de texto plano de forma muy simple.

El ejemplo que vamos a ver hoy es como podemos extraer datos del archivo /etc/passwd donde se encuentran los usuarios del sistema GNU/Linux.

El script es el siguiente:

#!/usr/bin/awk -f

# | ********************************
# | Reporte del archivo /etc/passwd
# |
# | Autor: Ing. Daniel M. Maldonado
# | Web: www.elcodigok.com.ar
# | Contacto:
# |             @elcodigok
# |
# | ********************************

BEGIN { FS = ":" }
BEGIN { USUARIOS = 0; SISTEMA = 0 }
BEGIN { printf "%-11s%-15s%-15s\n","ID","Usuario","Nombre" }
$3 >= 1000 { printf "%-11s%-15s%-15s\n",$3,$1,$5 ; USUARIOS += 1}
$3 < 1000 { SISTEMA += 1}
END { print "--------------------------" }
END { print USUARIOS " Usuarios registrados" }
END { print SISTEMA " Usuarios de Sistema" }


domingo, 2 de febrero de 2014

11 opciones que no conocías para el comando ls

ls quizás sea el comando más ejecutado desde una terminal y su función es simplemente listar el contenido de un directorio, algo tan simple y a la vez tan útil.

La idea de hoy es complementar este comando con algunas opciones que nos van a permitir mostrar más información o incluso clasificarla de diferente forma.

En los manuales de ayuda del comando ls en GNU/Linux podemos encontrar diferentes opciones que es posible que nunca lo hayas utilizado.


$ man ls

-a, --all
esta opción podemos utilizar para mostrar todos los archivo de un directorio, incluso aquellos que se encuentran ocultos

    $ ls -a

--color 
gracias a esta opción le podemos dar más vida a la consola de comando incorporando algunos colores que identifican a directorios, archivos, ejecutables, etc.

    $ ls --color

miércoles, 29 de enero de 2014

3 Consejos para automatizar las tareas


Los que desde hace un tiempo me siguen, saben que tengo la suerte y la dicha de ser administrador de servidores y redes, en el día a día siempre es necesario realizar tareas de control, crear expresiones regulares para parsear un archivo Logs, controlar procesos, etc.

Lo interesante de tener una base de programación es que uno tiene la posibilidad de automatizar determinados procesos de tal forma que la tarea se reduce a la ejecución de un comando o termina como una tarea periódica dentro del crontab.

Por ese motivo, mi recomendación es tener presente aquellos lenguajes de programación que nos puede facilitar y ser una gran ayuda en todo momento, en el caso de los servidores GNU/Linux me gusta mucho utilizar Bash, AWK y Python. Estos son los tres componentes con los que si o si les aseguro que su vida va a ser muy simple.

Del lado de servidores Windows les recomiendo conocer en profundidad PowerShell y .NET para realizar los script y poder administrarlo directamente desde la consola.

Mis recomendaciones a la hora de escribir sus script son:

lunes, 20 de enero de 2014

Como crear un proyecto en easybook

Hace un par de días escribimos sobre easybook, un excelente herramienta a la hora de trabajar con nuestra documentación, libros o papers. La idea de hoy es comenzar a trabajar con easybook, crear un proyecto e ir conociendo su estructura y la forma de implementación.

Una vez que logramos instalar easybook, podemos utilizar su comando ./book new para iniciar un nuevo proyecto. Para obtener más ayuda en todo momento, podemos hacer uso de la opción help:

$ ./book help new


$ ./book new "El codigo k"


A partir de ahora, easybook creó un directorio de trabajo con una estructura muy particular

easybook/
    doc/
        el-codigo-k/
            config.yml
            Contents/
                chapter1.md
                chapter2.md
                images/
            Output/

miércoles, 15 de enero de 2014

Vim for Dev: instalando SnipMate


Este es uno de esos plugins para Vim que a uno lo hacen ser más productivos y ágiles a la hora de codear en nuestros proyectos, su nombre es SnipMate y vamos a ver lo fácil y rápido que es instalarlo y comenzar a usarlo.

SnipMate sin duda es excelente y lo que hace es algo muy similar al editor TextMate, cuando estamos acostumbrado a escribir código de un determinado lenguaje existen estructuras ya definidas, como por ejemplo un div en HTML o un bucle for en Python, bueno SnipMate nos ayuda a completar esa estructura, la idea es escribir la palabra div seguida de un [ TAB ] y automáticamente se va a completar.

SnipMate nos va a ayudar a completar las estructura de varios lenguajes de programación como C++, C, erlang, HTML, JavaScript, Java, Object, Perl, PHP, Python, Ruby, sh, tcl y zsh entre los más populares.

Instalación


Lo primero que vamos a hacer es ir hasta el repositorio dentro de GitHub y clonar el proyecto en local, de la siguiente manera:

$ git clone https://github.com/msanders/snipmate.vim.git
$ cd snipmate.vim/

Finalmente a todo el contenido de este directorio copiarlo en nuestro directorio oculto .vim ubicado en nuestro $HOME

$ cp -R * ~/.vim

jueves, 9 de enero de 2014

Pasión e ilusión por el Mago More

Muy buenos días, hoy les propongo no hablar sobre una herramienta que nos hace la vida más fácil, ni tampoco comentar sobre algún lenguaje de programación, hoy les propongo ver un video para Emprendedores.

En estos dos últimos días, terminé de ver una conferencia del español José Luis Izquierdo más conocido como el Mago More y no quería dejar pasar esta oportunidad para que vean esta conferencia.



José Luis Izquierdo es Actor y guionista, Mago, Presentador, Cómico y un Conferencista estupendo y por ello el enlace de hoy.

Saludos!

miércoles, 8 de enero de 2014

Se actualiza Symfony 2.3.9 y 2.4.1


A unos días de iniciar un nuevo año Symfony, uno de los Frameowrk más populares de PHP5 de la que en varias oportunidades hablamos de él, se actualizó en sus dos ramas estables más importantes la 2.3.9 y 2.4.1

Esto suma un total de más de 46 correcciones de bugs, optimizaciones y mejoras en varios componentes.

Por esta razón, es importante que si estas utilizando para tus proyectos web alguna de estas ramas 2.3.x y 2.4.x actualices siempre a la última versión estable y segura.

Symfony2 es un proyecto que día a día se transformó en una herramienta de desarrollo indispensable adoptado por muchos programadores amantes de PHP5, ya que utiliza componentes actualizados, simples de utilizar y escalable en todos momento.

Saludos!

martes, 7 de enero de 2014

easybook, la forma fácil de editar un libro

easybook es un proyecto que en estos últimos años me ayudó mucho a la hora de armar desde informes, trabajo final para mi carrera de grado en Ingeniería, Papers, apuntes, libros, documentación y lo que se les ocurra.


La idea principal de easybook creada por el español Javier Eguiluz, es que a partir de algunos archivos en formato .md y una estructura básica de documentos, uno tenga la posibilidad de crear un documento final en múltiples formatos como por ejemplo PDF, Epub, incluso HTML y todos con una excelente terminación por defecto.

Es una herramienta escrita en PHP5 y utiliza los componentes de Symfony2, a diferencia de otras aplicaciones, easybook esta fundada en la consola de comandos, donde desde allí podemos generar nuevos proyectos, realizar algunas configuraciones y exportar su salida a los diferentes formatos.

Al igual que con Symfony2, easybook es software totalmente libre y se encuentra bajo los términos de la licencia MIT, es multiplataforma con lo cual pueden ejecutarlo en un Windows, Linux o Mac OS X.

Recuerdan que les comente que utiliza los componente de Symfony2, bueno entre esos componentes se encuentra Twig y es la forma de crear y personalizar todos los detalles para sus diferentes salidas, si tienen una noción básica de CSS, ya están en condiciones de personalizar sus trabajos con la utilización de estándares como HTML5 y CSS3.

viernes, 3 de enero de 2014

El formato de archivo Yaml


Yaml es un formato de serealización de datos inspirado básicamente en los lenguajes Python y XML que desde hace 13 años ya se transformó en un estándar, su nombre Yaml es un acrónimo recursivo que significa “YAML Ain't Another Markup Language” en español “YAML no es otro lenguaje de marcado”.

Es muy simple identificar un formato de tipo Yaml, su estructura es simplemente prolija basada en la identación y herencia.

Características


Yaml fue creado con la premisa de que todos los datos pueden ser representados en forma de listas, como les comentaba líneas atrás, su sintaxis es sumamente sencilla y fue diseñada para que los usuarios tengan la capacidad de crear y entender este formato.


  • Los contenidos en YAML se describen utilizando el conjunto de caracteres imprimibles de Unicode, bien en UTF-8 o UTF-16.
  • La estructura del documento se denota indentando con espacios en blanco; sin embargo no se permite el uso de caracteres de tabulación para indentar.
  • Los miembros de las listas se denotan encabezados por un guion ( - ) con un miembro por cada línea, o bien entre corchetes ( [   ] ) y separados por coma espacio ( ,   ).
  • Los arrays asociativos se representan usando los dos puntos seguidos por un espacio. en la forma "clave: valor", bien uno por línea o entre llaves ( {   } ) y separados por coma seguida de espacio ( ,   ).
  • Un valor de un array asociativo viene precedida por un signo de interrogación ( ? ), lo que permite que se construyan claves complejas sin ambigüedad.
  • Los valores sencillos (o escalares) por lo general aparecen sin entrecomillar, pero pueden incluirse entre comillas dobles ( " ), o comillas simples ( ' ).
  • En las comillas dobles, los caracteres especiales se pueden representar con secuencias de escape similares a las del lenguaje de programación C, que comienzan con una barra invertida ( \ ).
  • Se pueden incluir mútliples documentos dentro de un único flujo, separándolos por tres guiones ( --- ); los tres puntos ( ... ) indican el fin de un documento dentro de un flujo.
  • Los nodos repetidos se pueden denotar con un ampersand ( & ) y ser referidos posteriormente usando el asterisco ( * )
  • Los comentarios vienen encabezados por la almohadilla ( # ) y continúan hasta el final de la línea.
  • Los nodos pueden etiquetarse con un tipo o etiqueta utilizando el signo de exclamación( ! ) seguido de una cadena que puede ser expandida en una URL.


Lo interesante de todo, es que al ser un estándar es posible encontrar librerías que nos ayuda a interpretar este tipo de formato en los lenguajes de programación más utilizados, como C, Ruby, Python, Java, Perl, C#, PHP, JavaScript, etc.

La primera vez que me tocó editar un archivo con formato Yaml fue en la primera versión de Symfony y desde ese momento no dejé de utilizarlo para mis proyectos que programé en Python como WPHardening y MTFF (MikroTik Firewall Framework) como los archivos de configuración.

miércoles, 1 de enero de 2014

Feliz 2014

3 ... 2 ... 1 


Feliz año nuevo para todos! A comenzar con el pié derecho y mi deseo para un muy buen 2014 para todos.

Saludos!

Entradas populares