domingo, 29 de octubre de 2017

Cosas de la vida: Evita ser estafado

Había ya escuchado varias historias de personas que fueron estafadas, pero, a mi no, nunca me pasaría eso, yo era más listo que esas personas, me dije. Lo cierto es que nadie está a salvo, todos estamos expuestos a ser estafados, así que lo mejor que podemos hacer es aprender de la experiencia de otros y dudar siempre de las oportunidades que se nos presentan.

En el año 2008, en la pequeña ciudad de no más de 30 mil personas donde aun vivía yo, existían sociedades de ahorro y prestamos, dicha sociedad debería funcionar con voz y voto de los socios, pero en la realidad los socios solo ponían capital y recibían una utilidad. Cierto día empezó a correr el rumor de que una de estas sociedades estaba dando un retorno de utilidad del 21% mensual, esta sociedad tenía varias sucursales por todo el estado.
Muchas personas corrieron a depositar sus ahorros, incluyendo a mi madre que no quiso perderse la gran oportunidad, la gran oportunidad decía ella, y así fue como fue a depositar una suma considerable Yo era niño, y muy descuidado, no cuestionaba lo que me decían, obedecía  cual niño obediente. Mi madre me comentó antes de realizar el deposito, pero yo solo asentí con la cabeza sin decir nada. Pasaron un par de semanas para enterarnos que la acta directiva, el gerente general y dos o tres colaboradores más, se habían dado a la fuga llevándose con ellos cientos de millones de pesos, producto del ahorro de los socios.
De esta experiencia aprendí algunas cosas, cuando muchas personas corren hacia un lugar, antes de que uno salga corriendo detrás de ellas, se debe parar, reflexionar y no sólo actuar por impulso. Una inversión que prometa más del 3% de rentabilidad mensual, no es una inversión sostenible en el tiempo, hay que dudar de ellas. Siempre, siempre se debe diversificar y no postar todos tus ahorros en un mismo lugar.

La segunda anécdota le pasó a un amigo, justo había salido de una reunión y salió a caminar para despejar la mente, iba caminando cuando de pronto miro al suelo y se encontró con un rollo de billetes, al principio no estaba seguro de lo que era, pero después confirmó que era un rollo de billetes, lo tomó, siguió caminando y apresuró el paso, no paso mucho para que una persona lo alcanzará y le dijera que lo había visto recoger el rollo de billetes, pero que no se preocupará porque no iba a decir nada, pero con una condición, que le pasará una cantidad de dinero. Uno pensaría que mi amigo sacaría esa cantidad del mismo rollo de billetes encontrado, lo cierto es que no, mi amigo sacó la cantidad de dinero de su propia billetera, probablemente no tenía la cantidad que el sujeto pedía para guardar silencio, así que le entregó todo lo que tenía en la billetera, que más daba si ese día estaba de suerte. Al llegar a casa saco el rollo de billetes encontrado sólo para darse cuenta que sólo el primer billete era real, el resto billetes falso.

Tengo otras historias que contaré más adelante.

Por cierto, existe un fideicomiso para cuando una sociedad se va a quiebra, al final mi madre recuperó cerca del 70% del capital que le estafaron.


domingo, 8 de octubre de 2017

De visita al templo Bahai

He tenido días con muchas obligaciones, el trabajo y la universidad me tenían agobiado así que solicité un descando de 15 días, aproveché en descansar, dormir hasta muy tarde, desayunar con toda tranquilidad y leer los cientos de correos en espera. Esta semana recibí un mensaje de una gran amiga, me preguntaba si deseaba acompañarla a visitar el templo Bahai. A ella le gusta la fotografía, experimenar con diferentes posturas y angulos, así que imaginé que sería divertido visitar este hermoso templo y aprovechar en tomarnos muchas fotografías. Me emocioné y acepté la invitación.
Llegó el día domingo y como siempre, me levanté algo tarde, desayune rapido, me duché y partí al lugar del encuentro acordado, como ninguno de los dos tiene auto decidimos ir en tranporte publico, tomamos una micro que nos acercaría al lugar, en el trayecto bromeamos y reimos, así llegamos a la última parada. El templo se encuentra en un cerro, es necesario subir el cerro, hay autos colectivos que te cobran menos de 2 USD para llevarte hasta el templo, nosotros fuimos a buena hora porque no había poca gente.
El regreso lo hicimos a pie ya que los colectivos estaban saturados, fue divertido ver como algunos conductores no eran tan buenos con la subida y el auto se les apagaba, volver a retomar la marcha era todo un desafio.















lunes, 2 de octubre de 2017

Guía rapida de GitHub

Esta guía es una traducción de la guía oficial,  enriquecida con comentarios y experiencia propia, está validada para Windows y tiene como objetivos aprender a:
  • Crear y usar un repositorio
  • Iniciar y administrar una rama en GitHub
  • Abrir una petición Pull y llevar los cambios de una rama arbitraria a la rama principal
  • Subir un proyecto local a Git Hub
  • Clonar un repositorio a nuestro equipo de desarrollo
  • Subir los cambios de nuestro repositorio local al repositorio remoto
  • Actualizar nuestro repositorio local con los cambios del repositorio remoto

Git y GitHub están en constante evolución por lo que te recomiendo repasar de vez en cuando esta guía.

Qué es GitHub?

GitHub es una plataforma de alojamiento de archivos y control de versiones, usado principalmente para alojar códigos fuente y colaboración. Permite que tu y otros puedan trabajar juntos sobre los mismos proyectos sin importar el lugar  en donde se encuentren. GitHub está integrado con Git, Git es el sistema que permite llevar el control de versiones. Las principales ventajas de usar un sistema de control de versiones son:

  • Cuando modificas un archivo y confirmas los cambios, se crea una nueva versión de tu archivo, Git lleva el historial de las versiones y te permite acceder a ellos cuando así lo requieras.
  • Permite la colaboración simultanea de otros sobre el mismo archivo. Con Git puedes exponer tus proyectos al publico mediante Internet, cualquier persona con acceso a tu proyecto puede modificar los archivos, Git cuida y controla las modificaciones para asegurar cambios coherentes.
  • Tu proyecto está accesible y puedes acceder a el en donde quiera que te encuentres.
Normalmente uno tendría que configurar su propio servidor para Git, afortunadamente con la plataforma GitHub esto no es necesario y al menos para uso personal es gratuito. Ademas de GitHub existe otra plataforma de alojamiento que usa Git, BitBucket.

Esta guía te enseñará lo esencial  de GitHub, veremos conceptos como: repositorios, branches(ramas), commits, y peticiones Pull. Crearemos un repositorio Hello Word y aprenderás el flujo de trabajo de las peticiones Pull de GitHub, estas peticiones son una forma popular de crear y revisar código.

Crear un Repositorio
Un repositorio es usado usualmente para organizar un solo proyecto. Los repositorios pueden alojar directorios y archivos, imágenes, vídeos, hojas de calculo, y set de datos -cualquier cosa que tu proyecto necesite. Nosotros recomendamos incluir un archivo Readme o un archivo con información acerca de tu proyecto. GitHub lo hace fácil, te permite agregar un archivo Readme al mismo tiempo que creas tu nuevo repositorio. También ofrece otras opciones comunes como un archivo de licencia.
El repositorio hello-word que vamos a crear puede ser un lugar donde guardes tus ideas, recursos o compartir y discutir cosas con otros. Recuerda que un repositorio tiene asociado un historial de modificaciones, puedes consultar quien, cuando y que cambios realizaron. Es esto lo que lo diferencía de un servidor de archivos.

Para crear un nuevo repositorio
1. Ingresar con tu cuenta a GitHub
2. En la esquina superior derecha, hacer click en el botón + y seleccionar New Repository
3. Nombrar el repositorio como hello-word
3. Escribir una descripción corta
4. Seleccionar Initialize this repository with a README

Click en Create Repository
Los pasos descritos se usan cuando se desea crear un repositorio nuevo, de uso general y que se pretende gestionar desde la plataforma GitHub.

Crear una Rama

Branch (en español, rama)
Actualización: Desde el 2021 la rama por defecto cambió de nombre, ahora se llama main
Branching (en español, el acto de manejar ramas) es la forma de trabajar con diferentes versiones de un repositorio al mismo tiempo.
Por defecto tu repositorio tiene un branch llamado master que esta considerado a ser el branch definitivo. Usamos branches (ramas) para experimentar y realizar cambios antes de darle el visto bueno y pasarlo al branch master.

Cuando creamos un branch del branch master, lo que en realidad estamos haciendo es crear una copia, un snapshot (captura) del branch master tal cual se encuentre al momento de hacer el branch. Si alguien más realiza cambios al branch master mientras tu estás trabajando en tu branch, puedes perfectamente llevar esos cambios al tuyo.

En el siguiente diagrama podemos ver:
  • El branch master
  • Un nuevo branch llamado feature (funcionalidad), porque estamos realizando una nueva funcionalidad en este branch
  • El proceso por el que tiene que pasar el branch feature antes de llevar estos cambios a la rama principal master.


Alguna vez has guardado diferentes versiones de un archivo? Algo como:
story.txt
story-joe-edit.txt
story-joe-edit-reviewed.txt

Las ramas cumplen un objetivo similar con los repositorios, tener varias versiones.

En GitHub, programadores y diseñadores usan las ramas para solucionar errores e implementar nuevas funcionalidades, fuera de la rama principal, siendo la rama principal la rama en producción. Una vez que los cambios o funcionalidades están validados, se llevan a la rama principal master.

Para crear una nueva rama
1. Ir al repositorio hello-world (previamente debes haber ingresado a tu cuenta)
2. Click en la lista desplegable que dice "branch:master", lista que se encuentra encima de la lista de archivos (ver gif).
3. Ingresa un nombre para la rama en el campo de texto, readme-edits.
4. Click en el botón azul Create branch, o presiona enter en el teclado.



Ahora ya tienes dos ramas, master y readme-edits. En estos momentos tenemos exactamente lo mismo en las dos ramas. Más adelante agregaremos cambios a nuestra nueva rama.

Realizar cambios y commit
En GitHub, a la acción de guardar los cambios (agregar nuevos archivos, agregar o modificar contenidos de archivos) en el repositorio, se le conoce como realizar un commit. Cada commit tiene un mensaje que describe brevemente el porqué de los cambios realizados. Los mensajes de los commits capturan la historia de tus cambios para que otros programadores puedan entender que es lo que has hecho y porqué lo has hecho.

Realizar cambios y guardarlos
1. Seleccionar la rama readme-edits

2. Click en el archivo README.md
3. Click en el icono Editar, ubicado en la esquina superior derecha del archivo a editar.

4. En el editor escribe algunas lineas.
5. Escribe un mensaje del commit que describa tus cambios.
6. Click en el botón Commit changes


Estos cambios serán aplicados solo al archivo README en tu rama readme-edits, ahora esta rama contiene contenido que es diferente a la rama master

Abrir una petición Pull
Ahora que ya tenemos cambios fuera de la rama master, estamos en condiciones de abrir una petición Pull
Las peticiones Pull son el corazón de la colaboración en GitHub. Cuando abrimos una petición Pull, estamos proponiendo nuestros cambios y solicitando que alguien los revise y los incluya en su rama. Las peticiones Pull muestran diferencias diffs, del contenido en ambas ramas, cambios que fueron agregados se muestran en verde, cambios que fueron eliminados se muestran en rojo.
Tan pronto como realices un commit puedes abrir una petición Pull, y empezar una discusión para recibir retroalimentación, incluso si tu funcionalidad no esté terminada completamente, puedes ir haciendo commits  y pulls por cada iteración.
Las peticiones Pull pueden estar dirigidos a una persona en especifico o a un grupo de personas, para mencionarlos, en tu comentario debes agregar @nombre_usuario.
Es más, puedes abrir una petición Pull, para ti mismo e incluir los cambios de una rama a otra, es una excelente manera de aprender el flujo de trabajo.

Abrir una petición Pull para los cambios realizados en el archivo Readme
1. Seleccionamos nuestro branch donde se encuentra el commit
2. Click en el botón New Pull Request

3. Verificar los cambios en la sección donde se muestra el diff (parte inferior de la página, bajar el scrollbar)


4. Una vez que comprobaste que los cambios son correctos, puedes hacer click en el botón verde Create Pull Request, muy importante, lee el mensaje remarcado en el rectángulo rojo, en mi caso me dice que no hay conflicto y que puedo hacer un merge.
Si quieres también puedes agregar un mensaje antes de crear la petición Pull

Hacer un Merge a tu petición Pull
Se le conoce como Merge (combinar o mezclar en español) a la acción de llevar los cambios de una rama a otra. No te preocupes, Git lo hace por ti, al menos que exista un conflicto entre las ramas.
Bien, vamos a llevar los cambios que hicimos en la rama readme-edits a la rama master.
1. Posiciónate en la pestaña Pull Requests
2. Click en el botón verde Merge pull request para unir los cambios a la rama master.

3. Click en Confirm merge

Una vez confirmado el merge, Git te la opción de eliminar la rama Delete branch

Instalar Git 

Instalar Git para Windows, lo puedes descargar desde https://git-scm.com/downloads 
Yo personalmente trabajo con la linea de comandos de Git, no uso ninguna herramienta o aplicación GUI y esta guía esta diseñada para trabajar desde la linea de comandos.
Instalar Git no es tan complejo, solo sigue los pasos y opciones por defecto, pero si ten especial cuidado en el paso "Choose a credential helper", debes de seleccionar Git Credential Manager, quizás mas adelante escriba una entrada hablando exclusivamente sobre los credentials managers.

Subir un proyecto a repositorio de GitHub

Si en nuestro equipo local ya contamos con un proyecto y deseamos subirlo a GitHub, debemos seguir otra serie de pasos.
En mi equipo local tengo el siguiente proyecto llamado github-project, proyecto que subiré a GitHub



2. Ingresar al directorio del proyecto, click derecho y seleccionar Git Bash Here
3. Usaremos el comando init de Git. El comando init de Git crea un repositorio local, para poder trabajar con Git primero debemos tener un repositorio local.
4. Crear un archivo .gitignore con la lista de excepciones
5. Agregar todos archivos al repositorio con la sentencia git add .
6. Ejecutar un commit para aplicar los cambios con la sentencia git commit -m 'first commit', al ser la primera vez nos pedira configurar el email y nombre del usuario.
$ git config --global user.email "correo_usado_en_github@gmail.com"
git config --global user.name "nombre_usuario_github"

Con el commit lo que hacemos es aceptar los cambios en nuestro repositorio local.

7. Crear un repositorio en GitHub, siguiendo los pasos mencionados anteriormente pero sin seleccionar Initialize this repository with a README de preferencia asignarle el mismo nombre que el del proyecto.

7. Vincular nuestro repositorio local con el repositorio remoto, con la sentencia git remote add origin https://github.com/marcosrobertos/github-project.git
8.  Finalmente enviar los cambios de nuestro repositorio local a nuestro repositorio remoto, con la sentencia git push -u origin master git push -u origin main, donde origin es un alias a la url de nuestro repositorio remoto y master main es la rama por defecto. Git levantará un popup donde debes ingresar el usuario y contraseña de GitHub

Si el repositorio no es tuyo, debes de asegurarte el alias y la rama a donde debes subir los cambios. Para ello puedes ir a consultar el archivo de configuración de Git.
En términos de control de origen, usted es " downstream " cuando copia (clona, ​​realiza el pago, etc.) desde un repositorio. La información fluyó "hacia abajo" hacia ti.
Cuando realiza cambios, normalmente desea enviarlos de vuelta " upstream " para que ingresen en ese repositorio, de modo que todos los que proceden de la misma fuente trabajen con los mismos cambios.
La primera vez que hacemos un push usamos la opción -u, en palabras simples estamos estableciendo el repositorio y rama por defecto a donde haremos push y pull. La siguiente vez que ejecutes push o pull no será necesario que especifiques el repositorio y rama.

Si vamos a GitHub veremos nuestros cambios

Clonando un repositorio a nuestro equipo de desarrollo

Vamos a clonar un repositorio, asegúrate de tener instalado un cliente Git, si no:
Instalar Git para Windows, lo puedes descargar desde https://git-scm.com/downloads

Ubícate en el directorio donde quieres clonar tu proyecto, click derecho Git Bash Here

Ingresa el siguiente comando:
git clone url_proyecto

También es posible renombrar el directorio raíz del proyecto, para ello usa el siguiente comando:
git clone url_proyecto nombre_directorio

Subiendo cambios de nuestro equipo de desarrollo al repositorio

Subir cambios de nuestro equipo de desarrollo a nuestro repositorio se le conoce como hacer un push, podemos hacer un push a la rama main o a otra rama.

Ubícate en el directorio raíz de tu proyecto, click derecho Git Bash Here

Para ver los cambios, ingresa el siguiente comando:
git status

Hay que agregar al repositorio local todos los archivos que tienen cambios, para ello puedes ejecutar los siguientes comandos:
Agregar un archivo especifico git add nombre de archivo
Agregar todos los archivos con cambios git add .
Agregar todos los archivos con una extensión especifica git add *.extension

Para ver el nuevo estado de nuestro repositorio local
git status

Confirmar los cambios en nuestro repositorio local
git commit -m "mensaje"

Subir los cambios a nuestro repositorio remoto
git push

** No fue necesario usar la versión git push -u origin main ya que el repositorio fue clonado **

Actualizar nuestro repositorio local con los cambios del repositorio remoto

Ubícate en el directorio raíz de tu proyecto, click derecho Git Bash Here
Ingresa el comando git pull origin main
Donde origin es el alias de la url de tu repositorio y master es el nombre de la rama. Te aconsejo averiguar el nombre de la rama ya que actualmente el nombre de la rama principal por defecto es main, anteriormente era master

Manejo de ramas en Git Bash

Cambiar de Rama
Lo primero debes de hacer un git pull luego ejecuta el comando
git checkout nombre-rama
Si todo sale bien vas a ver el mensaje "Switched to a new branch 'develop'
" indicando que has cambiado de rama

Revertir ultimo commit
git revert id-commit

Mostrar historial de commits 
git log

Revertir cambios que aun no han sido commit
git restore path-archivo
git restore .
git restore *.*
git restore :/

Resumen de comandos básicos de VIM
https://docs.oracle.com/cd/E19620-01/805-7644/6j76klopr/index.html