Agregando un repositorio privado de GitHub a Composer

Composer

Como agregar un repositorio privado de github a nuestro proyecto utilizando composer para manejar los repositorios usando el token oauth.

Hace poco que tengo algunos proyectos privados en GitHub ya que estaba bastante acostumbrado a usar Bitbucket para esto. La razón de la migración es que había tenido problemas con la carga de las librerías privadas usando Composer desde Bitbucket así que le di una oportunidad a GitHub.

Para los que no saben Composer es repositorio de librerías para php que maneja las dependencias de tus proyectos. Es bastante útil para no reusar código y manejar las actualizaciones de todas tus aplicaciones simplemente con un «Update».

De manera simple se crea un archivo composer.json en donde está la información básica del proyecto y sus dependencias.

Para poder agregar un repositorio privado necesitamos lo siguiente.

  1. Generar el Token para el acceso desde GitHub
  2. Crear el composer.json que usará el repositorio privado
  3. Agregar nuestro token.
  4. Installar las dependencias.

Generando el token de acceso.

Fuente : https://help.github.com/articles/creating-an-access-token-for-command-line-use/

  1. Una vez ingresado a tu dashboard de GitHub selecciona tu foto de perfil en la esquina superior derecha y en el menú que aparece haz click en Settings.
  2. Una vez en Settings hacemos click en «Personal Access Tokens»
  3. Creamos un nuevo token dándole el nombre y los permisos correspondientes.
  4. Guardamos el token recién creado.

Generando un composer.json mínimo.

{
    "repositories": [
        {
            "type": "vcs",
            "url": "[email protected]:NAITUSEIRL/NOMBRELIBRERIA.git"
        }
    ],
    "require": {
        "ctala/NOMBRELIBRERIA": "dev-master"
    }

}

En el ejemplo anterior simplemente agregamos el repositorio privado que usaremos. Cuando se específica el tipo de repositorio VCS se hace para que se detecte automáticamente a que tipo de repositorio corresponde.

Es importante usar la notación de ssh (git@github) y no de https para la dirección del repositorio o este simplemente no funcionará.

Agregando el token a la configuración.

Agregar el token es bastante sencillo debido a que Composer ya tiene una herramienta que nos ayuda para esto. En este caso simplemente ejecutamos :

$ composer config -g github-oauth.github.com TOKENBASTANTELARGO

Esto permite que podamos acceder al repositorio privado agregado anteriormente con el access token.

Finalizando.

Ya teniendo todo en orden nos vamos a nuestra carpeta en donde tenemos nuestro composer.json y simplemente ejecutamos la instalación de las librerías.

$ composer install

Si todo salio bien se descargarán todas las librerías de dependencia incluyendo la privada que especificamos en el repositorio.

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

Yii2 Implementando Access Token para Autenticación REST

Los métodos de autenticación son los que nos permiten saber si un usuario pertenece a un sistema o no, generalmente cuando accedemos a algunas de nuestras cuentas de correo, facebook, etc lo que nosotros hacemos es autenticarnos con el servicio con nuestro usuario y clave. En este caso usaremos un Access Token para poder acceder a la aplicación.

Cuando usamos APIs en general, podemos acceder a la información de un servicio de una manera bastante sencilla. Nos gustaría que esto fuera por personas que tienen al menos una cuenta en el sistema o servicio.

En este caso veremos como implementar un access token para poder autentificarnos con la aplicación sin usar usuario o clave, lo que nos hará más sencillas las consultas.

Leer más

Base de datos de las instituciones financieras de Chile basada en la información del SBIF

Instituciones Financieras Chile – Base de datos de las instituciones financieras de Chile basada en la información del SBIF en SQL, CSV, PHP y JSON

Origen: GitHub – ctala/InstitucionesFinancierasChile: Base de datos de las instituciones financieras de Chile basada en la información del SBIF

Casi todas las cosas que comparto son debido a que no me gusta hacer el mismo trabajo más de una vez. En este caso estoy haciendo un modulo financiero para nuestro sistema ERP para conciliación bancaria, por lo que encontré que era buena idea tener la información de las instituciones bancarias de Chile.

Leer más

Cómo Tener la misma zona horaria en Mysql y PHP

Tener las hora del servidor MySQL y de PHP sincronizadas permite que no tengamos problemas en el análisis de los datos de nuestras aplicaciones y/o sistemas, en especial si uno de los factores de medición dependen de la diferencia de estos tiempos. Acá veremos como tener la misma zona horaria para ambos servicios.

Suele suceder que cuando usamos funciones de Mysql que retornan la hora y además otras por parte de PHP, la hora en ambas no es la misma. Esto es debido a que las configuraciones de ambas no son la misma.

Ambas horas vienen desde la configuración del servidor, pero por defecto ambas están en la zona horaria UTC, así que no importa la hora que tengamos en el servidor, la hora de estos servicios será distinta si no las configuramos de manera adecuada.

A continuación como configurar ambas.

Configurando la zona horaria en el servidor MySQL

Si bien podemos editar directamente el archivo de configuración de MySQL, lo que haremos es crear un archivo distinto que solo posea la definición de la zona horaria. De esta manera evitamos perder esta información por alguna actualización.

  1. Creamos el archivo de configuración en la carpeta conf.d de mysql. Todos los archivos con extensión .conf serán cargados desde aquí.
  2. Definimos el timezone del archivo. Acá puedes usar diferencias horarias, o zonas horarias. Las diferencias horarias son contra UTC que es el : +00:00 .
  3. Reiniciamos el servidor de mysql para actualizar la información.

Si bien puedes usar el editor que quieras, yo usaré  VIM por costumbre.

#vim /etc/mysql/conf.d/date.conf

y en el contenido definimos nuestra zona horaria. En mi caso además de «America/Santiago» podría haber puesto «-03:00».

default_time_zone='America/Santiago'

Ahora reiniciamos el servicio y debería estar funcionando.

# service mysql restart

Para corroborarlo, podemos loguearnos a mysql y ejecutar :

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2016-02-10 12:03:35 |
+---------------------+
1 row in set (0.00 sec)

Configurando la zona horaria en PHP

En este caso si editaremos directamente el archivo php.ini que se encarga de la configuración de php para apache. Si tienes otro servidor simplemente lo haces donde corresponda.

# vim /etc/php5/apache2/php.ini

Buscamos y editamos el siguiente contenido según corresponda :

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/Santiago"

Y en este caso reiniciamos el servidor de apache.

# sudo service apache2 restart

Eso sería todo, ahora tu BdD y aplicación web tienen la misma hora :).

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

¿ Es necesario un framework ? Simplificando el desarrollo de software

Esta es una discusión que he tenido en bastantes ocasiones con pares y alumnos. La idea de este post es explicar un poco lo que se ha logrado con todas estas discusiones.

En muchos de los casos durante la universidad no hemos tenido la necesidad de desarrollar un software complejo, un software el cual deba de adaptarse a las necesidades del entorno, las modificaciones de ciertas librerías o simplemente al tiempo. La semana pasada le di el ejemplo a un alumno sobre codeignigter, en mi caso fue el primer framework que utilicé para desarrollo web utilizando php y actualmente ( no se si vaya a cambiar pronto) ya no es compatible con las nuevas versiones de php. Esto le puede pasar a cualquier desarrolo, la cantidad de actualizaciones, parches y modificaciones que salen anualmente son muchas más de las que podemos contar. Si esto le pasa a una aplicación que es mantenida por cientos de personas en la comunidad .. ¿Que nos espera a una aplicación desarrollada por nosotros ?

Ojo, esto no es para asustar a nadie, es simplemente para generar conciencia de lo que podría a pasar si no prevenimos.

Es solo cosa de mirar algunas de las aplicaciones más usadas del momento, como lo es Flickr y Facebook, ambas son en base a php y la verdad no creo que vayan a dejar de ser compatibles con sus nuevas versiones o no estén preparados para situaciones como esa. Deben de tener docenas si no cientos de desarrolladores con acceso al código que ocupan y tienen que además tener un estándar que seguir para publicar su código o simplemente para entender el que ya está escrito.

Lo bueno es que ya muchos desarrolladores han lidiado con los mismos problemas a los cuales podríamos enfrentarnos y han desarrollado frameworks en los cuales se han recopilado los conocimientos de muchos desarrolladores para hacer nuestras aplicaciones aún más fácil de realizar.

Ok, podemos decir que los frameworks están para hacer que un desarrollo complejo se convierta en un desarrollo simple. Es posible que para aplicaciones sencillas si agreguemos una complejidad innecesaria al implementar un framework, pero este post se basa en aplicaciones un poco más complejas, esas en las que se requiere ya de un equipo, en las que usaremos manejo de versiones, en las que dividiremos el código en hitos y cada uno de ellos se convertirá en un entregable de un proyecto.

Ok, ¿ pero que es un framework ?

Wikipedia : «A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions. «

Personalmente me gusta el término de «un esqueleto que incluye lo básico para generar una aplicación compleja sin la complejidad requerida para realizarla«.

Si partimos de lo básico, un framework separa la lógica de las vistas, ordenando la forma en que desarrollaremos. De ahora en adelante hablaré un poco del Modelo Vista Controlador ( MVC ). En este modelo el framework provee una clara separación en 3 capas, y la posibilidad de interactuar entre ellas. Teniendo estas separaciones será muy difícil para nosotros desarrollar de manera inadecuada, aunque he visto casos que al no entender el concepto igual logran hacerlo pero se dan cuenta rápidamente que hay algo mal.

En general los frameworks se encargarán de conectar a la Base de datos por nosotros,  se encargan que los datos sean accesibles por las vistas y algunos incluso nos facilitan la generación de código CRUD ( Create Read Update Delete ) para poner nuestra aplicación en marcha lo antes posible. Si tuvieramos que implementar esto por nuestra cuenta ( créanme tuve que hacerlo hace años atrás ) nos demoraríamos mucho tiempo y agregaríamos esa complejidad al desarrollo que tanto tratamos de ignorar. Teniendo esto en cuenta nosotros o nuestro equipo de puede enfocar simplemente en el desarrollo y éxito de la aplicación olvidándonos de desarrollo que cientos de personas ya han hecho por nosotros.

Hay dos frases que me gusta recalcar cuando hablamos de un framework :

  1. No reinventar la rueda
  2. Enanos parados sobre los hombros de gigantes. ( nanos gigantum humeris insidentes )

Ambas se refieren a lo lejos que podemos llegar basándonos en conocimiento ya escrito. ¡ Imagínense que sería de la física si tuviéramos que descubrir la ley de gravedad por cada científico que quisiera explicar por que una manzana se cae al piso ! Ahora piensa nuevamente por que quieres desarrollar algo que ya cientos de personas lo han hecho antes que tu, ¿ ahora suena más ridículo no ?

¿ Como elegir un framework ?

Les recomiendo que cumpla la mayoría de los puntos a continuación.

  • Que sea sencillo de utilizar. La idea es simplificar, no hacer más complejo el desarrollo.
  • Mejore el rendimiento de la aplicación. Muchos framework por ejemplo usan caché para mejor rendimiento.
  • Asegure seguridad. Esto es muy importante y es una de las mejores razones de usar el framework.
  • Separe el lenguaje de las vistas.
  • Ojalá sea Orientada a Objetos !
  • Habilidad de poder configurar
  • Que tenga buena documentación.
  • Que tenga una buena comunidad. La comunidad es la que te ayudará cuando tengas problemas.

 

Ok, espero que con todo lo anterior ya puedas decir que un framework si es necesario no importando el lenguaje que utilizarás. Yo hace un tiempo que uso Yii y me he estado portando a Yii2, cumple con todas las características que dije anteriormente y al parecer se ajusta muy bien a mi mindset, ahora la pregunta es ¿ cual framework usarás tu ?.

 

 

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,