faemino http://faemino.posterous.com Most recent posts at faemino posterous.com Fri, 25 May 2012 04:40:00 -0700 Receta básica sobre GIT y un poco de Bitbucket http://faemino.posterous.com/receta-basica-sobre-git-y-un-poco-de-bitbucke http://faemino.posterous.com/receta-basica-sobre-git-y-un-poco-de-bitbucke

Esto es más de uso personal para acordarme de ciertas acciones que hasta que tenga más práctica siempre va bien tener a mano. No pretende ser una gran guía. Si te ayuda, perfecto.

 

Configuración

git config --global user.name "Aquí tu nombre"

git config --global user.email "Aquí tu email"

git config --global color.ui auto

Creación de un repositorio

git init

Pasar archivos a stage

git add . (Para pasar todos los archivos)

o

git add <nombre del archivo 1> <nombre del archivo 2> <nombre del archivo N>

Enviar los cambios

git commit -m "Mensaje"

 

Si tenemos un repositorio creado en Bitbucket (lo mismo para Github):

Vincular nuestro repositorio local con el repositorio online

git remote add origin <url del repositorio online>

Enviar los cambios

git push -u origin master

Obtener los cambios

git pull <url del repositorio online>

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Wed, 09 May 2012 08:08:00 -0700 Charla de iniciación a GIT http://faemino.posterous.com/charla-de-iniciacion-a-git http://faemino.posterous.com/charla-de-iniciacion-a-git

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Mon, 02 Jan 2012 09:57:00 -0800 Programación en Vala + GTK3 + Granite para ElementaryOS (Parte 2) http://faemino.posterous.com/programacion-en-vala-gtk3-granite-para-elemen-79031 http://faemino.posterous.com/programacion-en-vala-gtk3-granite-para-elemen-79031

2.- Vala + GTK3

2.1.- Primer Hello World

Empezaremos con un Hello World mediante Vala y GTK3. Dejaremos Granite para más adelante.

using Gtk;

int main (string[] args) {
        Gtk.init (ref args);

        var window = new Window ();
        window.title = "First GTK+ Hello World";
        window.border_width = 10;
        window.window_position = WindowPosition.CENTER;
        window.set_default_size (350, 70);
        window.destroy.connect (Gtk.main_quit);
        window.show_all ();

        Gtk.main ();
        return 0;
}

Compilaremos el código mediante:

valac helloworld.vala -o helloworld --pkg gtk+-3.0

Ejecutamos el resultado

./helloworld

Más adelante en la documentación se explicará a utilizar CMAKE cómo herramienta para la compilación.

2.3.- Segundo Hello World

Ahora vamos a hacer un Hello World más elaborado. Usaremos un botón GTK y haremos que ese botón responda al click.

using Gtk;

int main (string[] args) {
        Gtk.init (ref args);

        var window = new Window ();
        window.title = "First GTK+ Hello World";
        window.border_width = 10;
        window.window_position = WindowPosition.CENTER;
        window.set_default_size (350, 70);
        window.destroy.connect (Gtk.main_quit);

        var button = new Button.with_label ("Click me!");
        button.clicked.connect (() => {
                button.label = "Thank you";
        });

        window.add (button);
        window.show_all ();

        Gtk.main ();
        return 0;
}

Seguiremos compilado de la misma manera que hasta ahora.

valac trunk/src/helloworld2.vala -o helloworld2 --pkg gtk+-3.0

Ejecutamos el resultado

./helloworld2

2.4.- Avanzando con GTK3

A partir de este momento es más práctico seguir el manual de Vala + GTK3 que se puede encontrar en la página oficial de Vala: http://live.gnome.org/Vala/GTKSample

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Wed, 28 Dec 2011 11:32:00 -0800 Programación en Vala + GTK3 + Granite para ElementaryOS (Parte 1) http://faemino.posterous.com/programacion-en-vala-gtk3-granite-para-elemen http://faemino.posterous.com/programacion-en-vala-gtk3-granite-para-elemen

1.- Preparar el entorno de desarrollo

Es necesario una distribución linux que utilice GTK3, por ejemplo Ubuntu 11.10 o superior, Fedora 15 o superior, OpenSuse 11.4 o superior... Para esta guía usaremos Ubuntu 11.10 por ser Ubuntu la base de ElementaryOS.

1.1.- Instalación de paquetes necesarios

De los repositorios oficiales de Ubuntu instalaremos los siguientes paquetes:

Vala
sudo apt-get install valac

Herramientas de compilación
sudo apt-get install build-essential

Librerías GTK3
sudo apt-get install libgtk-3-dev

Librería Granite
Para esto deberemos descargarnos (la última versión) desde launchpad: https://code.launchpad.net/~elementary-os/+recipe/granite-daily

1.2.- Instalación de bazaar

No es obligatorio utilizar un sistema de control de versiones y en caso de utilizarlo tampoco es obligatorio usar bazaar, pero es recomendable si queremos publicar en launchpad.

sudo apt-get install bzr

1.3.- Instalación de cmake

Tampoco es obligatorio usar cmake como herramienta de compilación, pero es muy utilizada en los desarrollos de ElementaryOS y es buena idea seguir esta costumbre.

sudo apt-get install cmake

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Mon, 24 Oct 2011 01:13:00 -0700 Programación en Vala enfocada a ElementaryOS Luna http://faemino.posterous.com/programacion-en-vala-orientada-a-elementaryos http://faemino.posterous.com/programacion-en-vala-orientada-a-elementaryos

Si quieres desarrollar una aplicación escrita en Vala y pensada para ejecutarse en ElementaryOS Luna (ojo, esto no quiere decir que no se pueda ejecutar en otras distribuciones), hay que tener en cuenta unas cosas:

  1. La distribución desde la que desarrolles debe utilizar las librerías GTK3. Así que por ejemplo tenemos Ubuntu desde la versión 11.04, ya que Unity utiliza estas librerías. O una distribución que utilice el reciente GNOME 3, como Fedora. Olvidarse de usar Xubuntu, ya que XFCE aún usa GTK2. Y por supuesto nada de ElementaryOS Jupiter por la misma razón (Si cuando leas esto ya hay disponible una beta de Luna o ya está lanzada, entonces la decisión está clara).
  2. Existe documentación enfocada al desarrollo en http://elementaryos.org/developers/tech, pero cuidado que en el momento de escribir estas líneas hay secciones de esa documentación que hacen referencia a elementos propios de Jupiter y que desaparecerán en Luna, por ejemplo DockManager que dejará de usar Docky.
  3. Si se necesita una base de datos se puede usar SQLite pero no está de más seguir las recomendaciones de los desarrolladores de ElementaryOS y utilizar a más SQLHEAVY un wrapper de SQLite que nos facilitará muchas cosas.
  4. Con la instalación de SQLite en nuestra distribución no será suficiente, necesitamos también instalar el paquete de desarrollo de SQLite.
  5. Cada uno usa el editor de código o entorno de trabajo que más le guste, pero si buscas algo ligero, existe un plugin para programar Vala mediante gedit, llamado valencia.
  6. Más documentación sobre el API de ciertas interfaces que ofrece ElementaryOS, como puede ser Granite.
  7. Y por último las HIG de ElementaryOS.

Pese que hay información que ayuda al desarrollador, seguimos con las mismas carencias en el mundo linux de una documentación bien elaborada que sí tienen otros sistemas operativos.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Mon, 10 Oct 2011 10:11:55 -0700 No pisemos los sueños http://faemino.posterous.com/no-pisemos-los-suenos http://faemino.posterous.com/no-pisemos-los-suenos

En esta breve charla de Ken Robinson he visto reflejados algunos de mis pensamientos que han estado en mi mente desde los días en que acabé mis estudios de Formación Profesional, me tuve que enfrentar al mundo laboral y coincidió con mi primer viaje fuera de mi país. Un momento en que te plantéas unas cuantas dudas y preguntas.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Fri, 07 Oct 2011 08:17:00 -0700 Buenas prácticas en un MVC http://faemino.posterous.com/buenas-practicas-en-un-mvc-83571 http://faemino.posterous.com/buenas-practicas-en-un-mvc-83571
En un framework de desarrollo basado en el patrón Modelo-Vista-Controlador como es el caso de CakePHP, es muy recomendable conocer cada una de las capas y tratar de ubicar el código necesario en la capa más adecuada.
Conforme más he ido usando este patrón más me he dado cuenta (por lo menos en los desarrollos que me he visto involucrado) que lo más eficiente es lo que denomino (permitirme poner nombre a algo que ya existe, pero me hacía ilusión) "subir el código". Hecho de poner el máximo código posible o mejor dicho, el mayor número de lógica en los Modelos.

Con el siguiente ejemplo espero explicarme mejor:
Pongamos que tenemos que mostrar los registros de una base de datos, por ejemplo, personas. Pero no todas las personas, Únicamente las de sexo femenino.

1.- Manera realmente fea

Obtenemos desde el controlador mediante un find('all') todos los registros de la tabla y en nuestra vista, dentro del bucle de obtención de datos foreach. Añadimos un if que sólo muestre los registros deseados.

controlador
$this->set('personas', $this->Personas->find('all');
vista
foreach($persona as $persona):
    if( $persona['Personas']['sexo'] == 'M' ):
        pr($persona);
    endif;
endforeach;

2.- Manera menos fea

Desde el controlador filtramos en la consulta al modelo los registros que deseamos. Liberando a la vista de la lógica pudiéndose dedicar Únicamente a mostrar la información.

controlador
$this->set('personas', $this->Personas->find('all', array('conditions'=>array('sexo'=>'M')));
vista
foreach($persona as $persona):
    pr($persona);
endforeach;

3.- Mejor manera

Trasladamos toda la lógica al modelo. El controlador únicamente llama a un método del modelo y la vista únicamente muestra información.

modelo
function getMujeres(){
    return $this->find('all', array('conditions'=>array('sexo'=>'M')));
}
controlador
$this->set('personas', $this->Personas->getMujeres());
vista
foreach($persona as $persona):
    pr($persona);
endforeach;
De esta última manera, liberamos la vista, haciéndola menor, fácil de mantener y reutilizable. Sobre todo si quien la manipula es un maquetador con no muchos conocimientos de programación.
El controlador únicamente se dedica a realizar la acción pedida, ejecutando si es preciso métodos del modelo para poder proporcionar la información a la vista. Cambiar la fuente de información es tan sencillo como llamar a uno u otro método del modelo.
El modelo ahora tiene toda la lógica de obtención de información. Proporcionando métodos de acceso a la información que pueden ser utilizados por el controlador. Espero haberme explicado y como no, abierto a aportaciones y comentarios.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Thu, 06 Oct 2011 07:59:00 -0700 Programación orientada a objetos con PHP5 http://faemino.posterous.com/programacion-orientada-a-objetos-con-php5 http://faemino.posterous.com/programacion-orientada-a-objetos-con-php5

En killerPHP hay unos buenos tutoriales en video para iniciarse en la programación a objetos con PHP5. Un buen recurso para aquellos que aún están con PHP4 y su débil orientación a objetos o con programación estructurada. De paso hago un llamamiento (al vacío) de la necesidad de que los proveedores de alojamiento migren sus servidores a PHP5 de una vez y para conseguirlo hemos de todos poner nuestro granito de arena.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Thu, 06 Oct 2011 07:37:00 -0700 REST en PHP http://faemino.posterous.com/rest-en-php http://faemino.posterous.com/rest-en-php

Desde el excelente PHP Devoloper Center de Yahoo, encuentro una serie de interesantes y prácticos artículos sobre el uso de REST con PHP.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Mon, 19 Sep 2011 11:57:00 -0700 Ubuntu 11.04 libre de "Monos" http://faemino.posterous.com/ubuntu-1104-libre-de-monos http://faemino.posterous.com/ubuntu-1104-libre-de-monos

No tengo nada en contra de Mono, pero eso de necesitar un runtime que me consume recursos cuando son escasos no me convence si existen alternativas.

Uso dos aplicaciones que corren en Mono:

  • GNOME DO
  • Tomboy

Para GNOME DO la alternativa es Synapse, que está programado en Vala (que ojalá se establezca como lenguaje por defecto en el desarrollo de GNOME).

Y para Tomboy, pese perder el soporte con Ubuntu ONE, me paso a GNOTE programado en C++.

Así que desde el gestor de paquetes Synaptic se puede eliminar todo lo referente a Mono, sin miedo. Eso sí, se desintalarán Banshee y gbrainy. Totalmente prescindibles.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Fri, 02 Sep 2011 08:57:00 -0700 Guía de estilo para la programación http://faemino.posterous.com/guia-de-estilo-para-la-programacion http://faemino.posterous.com/guia-de-estilo-para-la-programacion

En un intercambio de "tweets" con @ala_747 y @happywebcoder sobre lo duro que es retomar un código programado meses atrás y lo bueno que es utilizar una manera de programar para facilitar la legibilidad del código, se me ha ocurrido compartir mi humilde "guía de estilo" que trato de utilizar en mis desarrollos y que he ido "perfeccionando" a lo largo de los trabajos por los que he ido pasando.

Variables

m_var : Variables miembro

l_var : Variables locales

in_var : Variables parámetros de función

out_var : Variables pasadas por referencia parámetros de función

c_var : Variables que se pasan del Controlador a la Vista (En entornos MVC)

Constantes

CONS_CONSTANTE : En mayúsculas

Métodos

Primera letra en minúscula y siguientes palabras primera letra en mayúscula.

nombreMetodo: Métodos públicos o protected

_nombreMetodo : Métodos privados

Identación

Reemplazo tabulaciones por 4 espacios.

Espacios, llaves, etc

Me gusta espaciar mucho el código, sobre todo entre parámetros, condiciones de sentencias, etc. Por ejemplo:

if( $l_var == true ){
}

while( $l_var == true && $l_var2 != false){
}

$this->nombreMetodo( $l_var, $l_var2 );

Arrays

Las arrays sobre todo cuando son multidemensionales pueden complicar su lectura así que a mi me va muy bien la siguiente estrcutura:

$matrix = array(

    'key1' => array(

        'value11',

        'value12'

   ),

   'key2' => array(

        'ke21' => array(

            'key211' => 'value211'

        )

   ),

   'key3'

);

Seguro que me he dejado algunas cosas, así que iré ampliándolo. Y por supuesto cualquier aportación será bien recibida.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor
Thu, 01 Sep 2011 00:45:00 -0700 Migrando http://faemino.posterous.com/migrando http://faemino.posterous.com/migrando

A los pocos que me "seguís" he dejado el blog que tenía en www.faemino.net y a partir de ahora usaré este espacio en Posterous.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/1994104/portrait.jpg http://posterous.com/users/hckIK5zxUvQzo Israel Fenor faemino Israel Fenor