lunes, 9 de diciembre de 2013

Como crear presentaciones con el lenguaje Go!


En este post les quería mostrar como armar presentaciones de este estilo: Go: a simple programming environment con el mismo lenguaje GO ;)




Lo primero que debemos realizar es obtener la herramienta que nos permitirá mostrar nuestras presentaciones ;) eso lo podemos hacer con el comando:
go get code.google.com/p/go.talks/present

(recuerden que debemos tener instalado Go correctamente y configurada nuestra variable de entorno $GOPATH, como lo explico acá: Comenzando con el lenguaje Go)
Una vez que obtenemos la herramienta, deberemos crear nuestro archivo .slide como se espesifica en la siguiente URL: 
http://godoc.org/code.google.com/p/go.talks/pkg/present

Este es el formato que debería tener el archivo, la primera linea que no este en blanco y que no sea un comentario va a ser el titulo de la misma

························· Comienzo de la presentación ··························
Como armar una presentacion con Go

Gabriel Pozo
Programador
http://aprendiendodeandroidymas.com/
@jackgris2
http://golang.org

* Este es un nuevo slide

Y esto es texto en el nuevo slide

* Si no colocamos texto en el slide

* Correr codigo

Con esto vamos a poder correr codigo Go en el mismo slide

.play go1.1/intdiv.go /func f/,/}/

* Mostrar codigo

Vamos a poder mostrar porciones de codigo para que se vean diferente al texto, y como podemos ver, podemos decir que muestre solo una u otra funcion de nuestro codigo ;)

.code go1.1/return-old.go /func slurp/,/^}/

.code go1.1/return-old.go /func min/,/^}/

* Cargar imagenes en la presentacion

Podemos crear enlaces [[go1.1/blockprofile.svg][Texto que se ve]].
Como tambien mostrar las imagenes que tengamos guardadas

.image go1.1/blockprofile.png

* Donde coloco los archivos que queremos mostrar?

Simplemente con crear una carpeta que contenga lo que queremos mostrar y lo coloquemos en el mismo directorio donde esta nuestro archivo .slide

Por los enlaces, en este caso pueden ver que tome y modifique la presentacion del año 2013 que escribio Andrew Gerrand llamada What's new in Go 1.1 y que se encuentra en el codigo fuente

····························· fin de la presentación ····································


Las lineas en blanco después del titulo y el texto están correctas, pero no son obligatorias, y las lineas que comiencen con # van a ser comentarios.



Una vez que lo terminemos, lo podremos correr de la siguiente forma:
present archivo.slide (si agregamos la carpeta bin a nuestro path, sino el comando podría ser este $GOPATH/bin/present archivo.slide)
Y para verlo simplemente nos deberemos dirigir a un navegador y colocar la siguiente URL:  http://localhost:3999/



Datos extras:

Si ven dentro de la carpeta que se crea en $GOPATH/src/code.google.com/p/go.talks, encontraran carpetas con el nombre de años, por ejemplo 2013, dentro de cada una de ellas, verán los slides que han creado desarrolladores del lenguaje con esta misma herramienta. Esto es muy bueno porque simplemente con el comando present van a poder ver cada una de ellas de manera local, pero ademas podrán ver el código de cada una. Así podrán guiarse para que puedan armar sus propias presentaciones de la misma forma que lo han hecho ellos ;) (y como lo hice yo en este post :D)

El segundo dato, es que dentro de esa carpeta, si nos dirigimos a la carpeta present/templates, podemos modificar cosas predeterminadas como por ejemplo el saludos del final donde dice "thank you" lo podremos cambiar según nuestro idioma por el saludo que deseemos colocar :D

Eso  es todo por ahora ;) espero que les sea de utilidad, creo que es una buena forma de armar nuestras presentaciones con el propio lenguaje Go :D Además de que esta muy bueno de que podamos correr el propio código en las mismas ;) Nos vemos en la próxima, espero que les haya gustado ;)

Saludos, Gabriel

viernes, 6 de diciembre de 2013

Como comenzar con Beego: web framework para Go!



Hola a todos, en este post les quería presentar este interesante web framework para el lenguaje Go! De los que probé hasta ahora para ese lenguaje, creo que es uno de los más sencillo de utilizar y que mejor armado se encuentra.


Este framework es sencillo, ligero y totalmente libre (más abajo se encuentra el enlace hacia el código fuente) soporta RestFul, diseño MVC, sesiones, etc.  Lo que me gusta de este es, que esta diseñado para trabajar con Go, al estilo del lenguaje y no como varios otros frameworks, que son imitaciones de otros lenguajes. Lo que termina haciendo es que se mezclen estilos quedando un código bastante rebuscado y horrible :D (hay varias imitaciones de frameworks web de Ruby y Python dando vueltas por ahí)

Algo bueno para mi gusto sobre su arquitectura, es el diseño modular, lo que nos permite elegir que queremos o no, utilizar, en la siguiente imagen se ven los 8 mayores módulos que posee.

 Arquitectura del framework


Posible estructura que podríamos utilizar para nuestro proyecto: (no es obligación hacerlo de esta manera, solo es una opción)
 
├── conf
│   └── app.conf   
├── controllers
│   ├── admin
│   └── default.go
├── main.go
├── models
│   └── models.go
├── static
│   ├── css
│   ├── ico
│   ├── img
│   └── js
└── views
    ├── admin
    └── index.tpl

Otra ventaja es que para comenzar ya tenes la opción de que te arme un proyecto básico, de esta manera lo vas a tener andando en muy poco tiempo, y podrás ver como funciona ;)

Para esto solo necesitamos tener instalado una versión de Go 1.1 como mínimo (cualquier cosa acá explico como hacerlo Comenzando con el lenguaje Go)

Entonces para obtener Beego simplemente debemos utilizar un comando:

go get github.com/astaxie/beego
 
Y para que el manejo del proyecto sea más sencillo, instalamos la herramienta bee:

go get github.com/beego/bee

Para crear nuestra primer aplicación solo son unos simples pasos: (recuerden que siempre es recomendable cuando trabajen con Go tener configurado correctamente su GOPATH ;) )

$ cd $GOPATH/src
$ bee new hello
$ cd hello
$ bee run
 
Lo que hacen estos comandos es, movernos a la carpta src de nuestro GOPATH, crear con 
bee un nuevo proyecto llamado hello, movernos dentro del mismo, y correr el servidor para
pruebas que re-compila automáticamente al modificar un archivo y corre nuestra app en
 http://localhost:8080/.
   
Si nos dirigimos en nuestro navegador después de seguir esos pasos a esa dirección, vamos a poder ver el ejemplo que trae por defecto Beego ;)


Actualización 07/12/2013: (GAE: Google App Engine)





Repositorio de Beego modificado para GAE:
https://github.com/astaxie/beegae

Ejemplo:
http://beegogae.appspot.com
Código fuente:
https://github.com/astaxie/beegogae

Si quieren hacer funcionar el ejemplo de manera local, simplemente se descargan el ejemplo:
git clone https://github.com/astaxie/beegogae
Obtienen la versión modificada BeeGAE:
go get https://github.com/astaxie/beegae

Y ahora es cuestión de hacerlo funcionar con el servidor que GAE nos ofrece en el SDK: dev_appserver.py beegogae
Ya con eso vamos a poder ver el ejemplo de Beego sobre GAE de manera local en el puerto por defecto 8080, para eso nos dirigimos al navegador a la siguiente dirección:
http://localhost:8080

Sitio Oficial:

Código fuente: Beego

Post sobre el tema:

Espero que les haya gustado el post, en este caso solo vimos la herramienta, más adelante vamos a hacer cosas más complejas. Otra cosa interesante y que creo que va a ayudar mucho a atraer más gente a utilizarla, es que ya tienen soporte total para Google App Engine ;) Nos vemos en la próxima.


Saludos a todos, Gabriel

martes, 3 de diciembre de 2013

The Original Hacker segunda edición !!!


En este nuevo post, vuelvo a agradecer a Eugenia por compartir su conocimiento con todos nosotros, presentando la segunda edición de The Original Hackers :D



 
La verdad que la lectura es totalmente recomendable, sin ningún tipo de desperdicio, en la misma trata los siguientes temas:

Desarrollar Software Aplicando la Ingeniería Inversa: Donde muestra una excelente práctica para el desarrollo de software, que debo admitir que muchas veces me cuesta bastante implementarla :D Creo que lo más complicado es al principio, hasta que la cabeza nos hace un click, y comenzamos a ver las cosas de manera diferente. Creo que el artículo es muy útil, aunque no planeemos usarla, esta explicado de manera tan clara, que aunque no deseemos utilizar la técnica de desarrollo, vamos a saber exactamente de qué se trata  y de esta forma poder elegir teniendo un verdadero conocimiento de cómo funciona.

Manipular Archivos de Configuración Mediante ConfigParser: Este artículo me gusto mucho, yo lo e utilizado pero verdaderamente no había encontrado una explicación tan clara ya sea en español o en inglés :P Creo que para el que nunca lo utilizó es un excelente punto de partida, y para el que ya lo hizo, es una muy buena referencia ;)






Agregado de archivos cron y ejecución periódica de procesos en los paquetes .deb: Esta serie de artículos siempre me resultaron extremadamente buenos desde que comenzó con la revista Hackers & Developers Magazine, aunque hace un tiempo largo que no estoy utilizando una distro derivada de Debian, creo que son una excelente herramienta para conocer cómo trabajar con archivos .deb y así poder empaquetar nuestro software para una de las plataformas más populares en el mundo Linux. En este caso en particular nos enseña algo muy interesante y útil, como es automatizar tareas periódicas que nuestro software necesite que realice el sistema operativo donde es instalado. Con un ejemplo muy didáctico.

En cuanto a los dos últimos artículos, yo no sé absolutamente nada sobre PHP, pero de todas formas los leí y son muy recomendables:

¿cómo se hicieron los ABM de la Web “The Original Hacker Library”?: Este en este artículo muestra cómo pensar y trabajar para armar los ABM de una web, en esta ocación utilizando PHP y el framework que ella misma armó. De todas maneras creo que la utilidad real, es ver como se pensó y trabajó en un caso real como es la propia web de la revista, lo que le da un valor agregado muy grande.

Capas de Seguridad Inteligentes en PHP – Saneamiento del array superglobal $_POST: Ese artículo habla sobre cosas muy particulares del funcionamiento de PHP, pero lo que me gustó es que es un caso de estudio real que la autora investigó, creo que es un buen ejemplo de cómo proceder para realizar una investigación seria. Además de que trata un tema interesante como es el filtrar los datos que nos envían de manera automática, con lo cual podemos aumentar en gran medida la seguridad y de forma no tan complicada, como también ayudarnos a que nuestra web mantenga un funcionamiento correcto.

Y este es un breve resumen que la autora nos brinda sobre la misma:


[Ingeniería Inversa] Desarrollar Software Aplicando la Ingeniería Inversa: el arte de la ciencia:
Básicamente en este artículo se explica "cómo pensar lateralmente" para lograr aplicar Ingeniería Inversa en el desarrollo de sistemas. No es un artículo para cualquiera pero para quiénes estén pensando en dar un gran salto en sus carreras, les puede significar el primer paso.

[Python Scripting] Manipular Archivos de Configuración Mediante ConfigParser:
ConfigParser es un módulo de Python que sirve para manipular archivos de configuración basados en secciones como los típicos .conf y .ini de fail2ban o PHP. Este artículo más que "artículo" terminó siendo un manual de ConfigParser y me atrevo a decir que es lo más completo que se pueda encontrar no solo en la Web sino también, comparado con libros de editorial.

[Ingeniería de Software] Agregado de archivos cron y ejecución periódica de procesos en los paquetes .deb: Si hay que le hacía falta a la serie de artículos sobre paquetes Debian, era algo que explicara exactamente, como manejan Debian los cron.daily,los cron.d y compañía. Este artículo no solo explica este manejo a nivel Debian como Sistema Operativo, sino que además, expone la forma en la cuál se pueden implementar scripts periódicos en los paquetes .deb.

[Europio Engine Lab] ¿cómo se hicieron los ABM de la Web “The Original Hacker Library”?: Un laboratorio basado en la biblioteca de la revista. Incluye TODOS los códigos de ejemplo!

[Seguridad Informática] Capas de Seguridad Inteligentes en PHP –
Saneamiento del array superglobal $_POST:
El pequeño artículo "casi" estrella de esta edición: los resultados de una investigación sobre como fusionar una "mala" característica de PHP con Inteligencia Artificial y obtener una capa de seguridad automatizada, capaz de identificar el tipo de datos que el programador espera, filtrarlos, limpiarlos y sanearlos y todo esto, sin que el programador deba escribir ni un byte de código. Un artículo imperdible!


Casi terminando este post, quiero comentar que realmente les recomiendo la lectura de la revista, y que si no son programadores PHP no se salteen los artículos donde utiliza ese lenguaje, porque sin importar cual sea el lenguaje que les guste utilizar, en esos artículos nos deja conceptos muy interesantes y nos abren la mente para pensar como verdaderos programadores.

Antes de terminar quería citar otra parte del mail que nos envió Eugenia, donde dice:

De verdad que me hace mucha ilusión poder seguir compartiendo el conocimiento de manera libre y siento que entre todos estamos demostrando que el egoísmo y la avaricia de lo privativo, no es el único medio al cual recurrir cuando se quiera información confiable.


Esto lo quería compartir, porque yo creo firmemente en lo mismo, y que la única forma de avanzar con esto, es aportando cada uno con lo que pueda. Yo intento hacerlo compartiendo algunas cosas en el blog, y otras con los grupo donde participo como Cultura Libre Rosario, el GDG Rosario y la lista de correo desarrolladores-android.

Espero que les allá gustado el post, y por supuesto la revista :D

Sitios:
http://culturalibrerosario.org

http://rosario.gtugs.org

Lista de correo:
http://desarrolladores-android.com

Esta es la web de The Original Hackers: http://originalhacker.org

Y pueden descargarla directamente desde aquí: Enlace


Saludos a todos, Gabriel

lunes, 2 de diciembre de 2013

Charla con el GDG Rosario en Njambre el día 26/11

Hola a todos, este post es solo para mostrar algunas de las imágenes y compartir los temas de los que hablamos en la última presentación del grupo GDG Rosario, donde se trataron las tecnologías AppEngine y AngularJS.

La charla de AngularJS la dio mi compañero Alejandro Felcaro, y yo hable sobre AppEngine.

Algunas fotos, Alejandro hablando sobre AngularJS





Algunos de los regalos para las personas que asistieron






Hablando sobre AppEngine


Estos son los enlaces a las presentaciones:
Presentación AppEngine
Presentación AngularJS

Sitios Oficiales sobre las herramientas:
https://developers.google.com/appengine/
http://angularjs.org/

Esperamos verlos en la próxima presentación del grupo, a los que asistieron espero que les haya gustado, y a los que no, seguro nos vemos en la próxima.
La URL del ejemplo de AppEngine es http://gdg-rosario-409.appspot.com , el código fuente esta basado en https://github.com/coto/gae-boilerplate
Como se comento en la charla, la idea principal de esto es poder reunir a la gente de Rosario que le interesan las nuevas tecnologías de Google, para que podamos aprender unos de otros, conseguir contactos, y básicamente ayudarnos entre todos a poder crecer juntos. 

También los invitamos a ver nuestra web http://rosario.gtugs.org/, seguirnos en el Perfil de G+ y unirse a la lista de correo

 Saludos a todos, Gabriel