domingo, 29 de septiembre de 2013

Github y php : Hacer commit y push via Https


Este articulo lo escribo como experiencia que una vez tuve con un cliente, no estoy seguro que pueda funcionar para otras personas pero quiera publicarlo para que sea de ayuda para otras personas

Github es el popular servicio para alojar proyectos utilizando el sistema de control de versiones llamado Git. En esta parte quiero aclarar que Github y Git no son lo mismo, para entender un poco mas en detalle la diferencia puedes visitar este link

Hoy he tenido la oportunidad de trabajar en un proyecto donde un script PHP tiene que crear una serie de archivos, y esos archivos tienen que ser subidos automáticamente a un repositorio en Github. Quiero compartir la manera en que logre hacerlo, para que sirva de guía para otras personas. Tal vez no sea una de las  mejores técnicas pero logro obtener el resultado deseado, partiendo de esto puedes mejorar la técnica.

Lo primero que tenemos que hacer es  crear una cuenta en Github y crear un repositorio. Después con nuestro repositorio creado obtener la URL de mismo. Ejemplo:

https://github.com/SaulBurgos/temp.git.

Lo mas importante aquí es  primero verificar si en tu servidor web, tienes instalado Git. En esta sección no
puedo ofrecer mucha ayuda ya que puede variar según tu compañía de host. Pero a manera general puede ser descritos de esta manera:

  • Si tienes acceso a la terminal de tu servidor y puedes ejecutar comandos, pues solo tienes que seguir la guía de instalación en  http://git-scm.com/download/
  • Si no tienes acceso a la terminal, puedes consultar con tu proveedor de hosting de como instalar Git y te puedan dar acceso a la terminal para ejecutar comandos Git.
Lo siguiente es agregar nuestro repositorio Github a Git, donde haremos PUSH para enviar todo los archivos creados. Normalmente la configuración de un repositorio Github en Git seria asi:

git remote add 'origin' https://github.com/SaulBurgos/temp.git

De esta manera normalmente si hacemos push con el comando : 

 git push 'origin' master 

Nos preguntara el user y password y después subirá los archivos a Github. Pero como vamos a ejecutar comandos Git por medio de un script PHP necesitamos hacerlo un tanto diferente, para no tener que escribir el user y password.


 Lo primero es que vamos usar la autenticacion Github OAuth la cual nos permitirá hacer PUSH por medio de autenticacion HTTPS. Para esto necesitamos crear un "Personal Access Tokens" en nuestra  cuenta Github. Esto lo puedes hacer en settings > Applications > Personal Access Tokens.


Una vez que creas el tokens obtendrás algo como esto :

1912313134f10c7fghfghfhfhf506385f3877bedc1e

Este sera el token que usaremos para agregar nuestro repositorio Github a git usando esta estructura :

 "https://<OAuthToken>@github.com/username/application.git"

 La cual la nuestra quedaría de esta manera :

 https://1912313134f10c7fghfghfhfhf506385f3877bedc1e@github.com/SaulBurgos/temp.git

y nuestro comando Git para agregarlo  seria  :

git remote add 'github'  https://19686434f10c7fghfghfhfhf506385f3877bedc1e@github.com/SaulBurgos/temp.git

Con esto hemos terminado la configuracion de Git. Los comandos Git que utilizaremos en nuestro script PHP seran :
  •  git add -A
  • git commit
  • git push

Supongamos que hemos creado un repositorio Git y esta sera la estructura de nuestro proyecto :

/web/repo/   -> Aquí esta nuestro repositorio Git.(archivos a subir)
/web/script.php  -> Script PHP  que ejecutara los comandos Git.

La forma en que esto funciona es que el script PHP ejecutara comandos de terminal Git cuando se ejecute, así cualquier acción que queramos hacer con Git la haremos con PHP. Para ejecutar comandos de terminal con PHP usamos el método : exec. Ahora nuestro código PHP en el script sera este:

<?php
$pathRepo = __DIR__.'/repo';
chdir($pathRepo);  
exec("git add -A");
exec("git commit -m 'description del commit'");
exec("git push 'github' master --progress 2>&1");
?>
Ahora con solo estas linea de codido, cada vez que nuestro script se ejecute hara COMMIT y PUSH hacia Github, con los archivos que se encuentran en /web/repo/ sin pedir credenciales ya que estamos usando nuestro token OAuth. A cada uno de estos comando puedes hacerles un echo para ver los mensajes que devuelven. El método PHP chdir nos cambia de directorio para poder trabajar en la carpeta del repositorio.
Si lo prefieres puedes usar esta libreria para trabajar de una manera mas comoda : https://github.com/ornicar/php-git-repo , pero de antemano les advierto que no la he probado a fondo.

Libro de Google Maps




Hoy tengo el agrado de presentarles un libro en el cual he estado trabajando por 8 meses en mi tiempo libre. El cual en estos momentos se encuentra en la etapa final de edición. El libro trata sobre como usar la herramienta de mapas de Google Maps, enfocado específicamente en el uso de la API con javascript.

El libro esta orientado a desarrolladores web que desean integrar mapas en sus proyectos, pero que no tienen idea por donde iniciar con Google Maps. Desarrolladores en busca de una  guía paso a paso del proceso de creación de mapas.

El objetivo del libro es servir de guía a los principiantes de como usar la API de Google Maps, desde lo mas básico hasta las herramientas avanzadas de dibujo. Ayudando al principiante desde los inicios de como debe de leer la documentación oficial hasta preparar los datos para ser guardados en una base de datos.

En el libro podrás aprender lo siguiente :
  1. Los fundamentos básicos de coordenadas para trabajar con Google Maps, es decir el uso de latitud y longitud para localizar un punto en el mapa.
  2. Crear figuras geométricas para delimitar zonas y áreas geográficas de interés en el mapa.
  3. Uso de librerías externas, con el fin de extender la funcionalidad de Google Maps al trabajar con overlays.
  4. Geolocalizar al usuario, según su posición actual por medio de dispositivos móviles,usando HTML 5.
  5. Crear eventos sobre el mapa para interactuar con el usuario ó mostrar información relevante sobre el punto de interés.
  6. Trabajar con múltiples figuras geométricas al mismo tiempo en el mapa.
  7. Cómo preparar los datos del mapa y figuras geométricas para ser guardados en una base de datos.
Puedes descargar un capitulo de muestra gratis y obtener mas información en el siguiente link :



martes, 17 de septiembre de 2013

Googlemaps 3.14 problemas con el CSS

La nueva versión de googleMaps 3.14 agrega nuevas reglas CSS al mapa que dan estilo a los elementos en el viewport, por ejemplo la infowindows y algunos botones. La nueva versión tiene un estilo mas bonito y agradable a la vista.

Pero si tienes un proyecto web existente y no has especificado la versión de googleMaps a utilizar, como por ejemplo de esta forma :

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>

Lo que puede pasar es que googleMaps usara la ultima version disponible, como resultado en la ultima version 3.14 aplicara sus propios estilos CSS a todos los elementos del mapa. Esto puede ocasionar que tus infowindows o cualquier elemento personalizado que tengas en el viewport, luzca diferente o algunas veces terrible y con estilo de fuente distinto.

Para resolver esto,  puedes luchar con todos los estilos CSS que estan sobre escribiendo los tuyos, el problema es que googleMaps tienes estilos demasiados genericos usando la clase "gm-style" ejemplo:

.gm-style div, .gm-style span, .gm-style label {
   text-decoration: none;
}

Otra Solucion seria especificar la versión de googleMaps, cuando cargues la API. Y por ultimo otra solución, que no es totalmente de mi agrado pero es la única que he encontrado por el momento, es remover la clase "gm-style" con Jquery o puro javacript, no es una solución muy fancy que digamos pero por el momento es lo único que he encontrado.

Para ver un ejemplo de como funciona visita el siguiente enlace con un ejemplo que he preparado. Para remover la clase solo haz click en el boton "remove style" del panel de color verde y veras que los estilos son removidos.





Convierte cualquier archivo a cualquier formato

Interesante web que ofrece convertir cualquier archivo a cualquier formato, solo tenemos que subir un archivo y escoger el formato deseado. Lo que me sorprende es la cantidad de formato soportados. La verdad que una util herramienta para tenerla entre tus marcadores del navegador, nunca se sabe cuando puedes necesitar algo asi. 

Aqui dejo un enlace de los formatos : https://cloudconvert.org/formats

y el link de la web : https://cloudconvert.org/

miércoles, 4 de septiembre de 2013

Estas matando el derecho al anonimato de tus hij@

Cualquier padre en el mundo con una cuenta facebook le gusta poner fotos de su hijo durante el embarazo y después del nacimiento, en sus cuentas de facebook crean albumes con  fotos de cada momento de su vida al igual que  publican en sus muros cada actividad  sobre su hijo. Es algo totalmente comprensible ¿ a quien no le gusta capturar cada momento  especial de su hijo en la vida ? 

Algo interesante que sucedió recientemente es que facebook actualizo sus políticas de privacidad (de nuevo) y hay una parte que dice : 

" We are able to suggest that your friend tag you in a picture by scanning and comparing your friend’s pictures to information we’ve put together from your profile pictures and the other photos in which you’ve been tagged."

Básicamente es que facebook con sus algoritmos de reconocimiento facial buscara en todas las fotos de tus amigos donde tu apareces , creando un registro de actividad en todo momento en sus bases de datos sin que tu lo sepas, cada vez que alguien suba una foto facebook sabrá si tu estabas ahí.

Como algunos ya sabrán en estos tiempos mantener el anonimato online es una tarea imposible sea por que nosotros mismos publicamos nuestra información en redes sociales o  por la NSA y su proyecto PRISM. De todas maneras los padres con cuenta facebook lo hacen por su propia voluntad  publicando contenido acerca de sus vidas personales y sus familias.

El problema es  que estos padres están privando de toda esperanza a sus hijos de tener anonimato en el futuro, por ejemplo todo mundo sabe lo difícil que es ser adolescente donde ciertas situaciones te parecen penosas o embarazosas, ahora imagina todas las fotos que tus padre pudieron haber subido a facebook de ti en ciertas situaciones que no quieres que nadie sepa las cuales son fácilmente accesibles gracias a facebook. 

Otra situación es que hoy en día es común que empresas hagan revisiones de ti en las redes sociales, por ejemplo aqui hay un articulo al respecto , y gracias a tus padres tendrán acceso a casi toda tu vida desde que eras niñ@.

Hay parejas que cuando sostienen peleas matrimoniales salen corriendo a publicar sus sentimientos en facebook , ¿ realmente quieres que tu hijo en el futuro sea relacionado con este tipo de actividades ?

Ciertamente estos padres esta creando un perfil y historial digital online que en un futuro sus hijos tal vez no quieran tener y lo mas preocupante es que nunca podrán tener la oportunidad de anonimato digital por que desde antes que nacieran fue arrebatado por sus padres.

Para ponerle algo extra a este articulo pongo estos video interesantes: