martes, mayo 21, 2013



Tutorial de Phalcon PHP
Capítulo I: Primeros Pasos

¿Qué es Phalcon?

Phalcon PHP es un framework de alto rendimiento desarrollado como un módulo nativo de C para el núcleo de PHP, convirtiéndolo en el framework más rápido de todos, siendo hasta 10 veces más rápido que symfony 2 y zend framework 2.
Phalcon es un framework full stack para el desarrollo de aplicaciones complejas.
Cuenta con los siguientes módulos y funcionalidades:

- Desarrollo con uso de PHP 5.3 y namespaces
- Patrón de arquitectura MVC para el desarrollo de aplicaciones (Módulo Simple, Multi Módulos y Micro Aplicaciones)
- Motor de ORM (Transacciones, Comportamientos, Relaciones, PHQL, Eventos, Validaciones, Hydration, Logging, Profiling, Sharding)
- HTTP Request/Response/Cookies
- ODM para la base de datos documental Mongo DB
- Motor de Templates (Volt)
- Inyección de Dependencias DI/IOC
- Gestión de Eventos
- Cifrado
- Filtrado y Saneamiento
- Constructor de Formularios y Validación
- Mensajes Instantáneos
- Cache
- Paginación
- Anotaciones
- Seguridad
- Traducción
- Gestión de Assets (despliegue de archivos públicos: js,css)
- Auto-Loader Universal
- Logging
- Interfaz de comandos CLI



Instalación de Phalcon

Usaremos Ubuntu como distribución base de preferencia una versión LTS 12.04 o release superior

Logueandose como root
$> sudo su -

Actualizando la lista de paquetes
$> apt-get -y update

Instalamos vim para como editor de texto
$> apt-get -y install vim

Instalando los paquetes de desarrollo de php y el compilador de c
$> apt-get -y install php5-dev php5-mysql gcc

Instalando el sistema de control de versiones git
$> apt-get -y install git

Haciendo un checkout del proyecto; desde github
$> git clone git://github.com/phalcon/cphalcon.git

Compilando el framework
$> cd cphalcon/build

Ubuntu de 32 bits
$> ./install 32bits

Ubuntu de 64 bits
$> ./install 64bits

Habilitando la extensión phalcon en la configuración de php
$> vim /etc/php5/conf.d/20-phalcon.ini
extension=phalcon.so

Verificando la carga de la exensión phalcon
$> php -r "print_r(get_loaded_extensions());"  | grep phalcon



Plataforma de despliegue (LAMP o LEMP)

* Instalación de Apache, extensiones de PHP y MySQL (LAMP)

Apache es el servidor web más popular en la internet y su combinación con Linux, PHP y MySQL
lo convierten en la plataforma más importante en el despliegue de aplicaciones web.

Instalación de apache, php, librería gráfica (gd), depurador (xdbug), interfaz de comandos (cli), ldap, cifrado (mcrypt), download manager (curl)
$> apt-get install apache2 php5 mysql-server php5-mysql php5-gd php5-xdebug php5-cli php5-ldap php5-mcrypt php5-curl


* Instalación de Ngnix, PHP y MySQL (Linux EngineX: LEMP)

Ngix es un servidor web muy ligero, de gran performance y cada vez gana más aceptación;
su uso con PHP, PHP-FPM y MySQL lo convierten en una interesante alternativa a Apache

Instalación de apache, php, librería gráfica (gd), depurador (xdbug), interfaz de comandos (cli), ldap, cifrado (mcrypt), download manager (curl) y php-fpm (fast cgi)
$> apt-get install nginx php5 mysql-server php5-mysql php5-gd php5-xdebug php5-cli php5-ldap php5-mcrypt php5-curl php5-fpm


Primera Aplicación: holamundo

Estructura base de directorios

tutorial/
  app/
    controllers/
    models/
    views/
  public/
    css/
    img/
    js/

Creación de la estructura base de directorios

$> cd /var/www
$> mkdir holamundo
$> mkdir holamundo/app
$> mkdir holamundo/app/controllers
$> mkdir holamundo/app/models
$> mkdir holamundo/app/views
$> mkdir holamundo/public
$> mkdir holamundo/public/css
$> mkdir holamundo/public/img
$> mkdir holamundo/public/js



Creación del archivo .htaccess del directorio public para habilitar el uso de URLs Limpias

$> vim holamundo/public/.htaccess
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>





Definiendo el BootStrap principal (Front Controller)

$> vim holamundo/public/index.php
<?php

try {
    //Definiendo el Autloader para autocargar las clases del controlador y del modelo
    $loader = new \Phalcon\Loader();
    $loader->registerDirs(array(
        '../app/controllers/',
        '../app/models/'
    ))->register();

    //Creando una instancia de Inyección de Dependencias
    $di = new Phalcon\DI\FactoryDefault();

    //Definiendo el directorio de vistas de la aplicacion, con el uso de una función lamba (función anónima)
    $di->set('view', function(){
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir('../app/views/');
        return $view;
    });

    //Gestionando la petición y desplegando la aplicación
    $application = new \Phalcon\Mvc\Application();
    $application->setDI($di);
    echo $application->handle()->getContent();

} catch(\Phalcon\Exception $e) {
    echo "PhalconException: ", $e->getMessage();
}





Creando el controlador IndexController
$> vim holamundo/app/controllers/IndexController.php

<?php

class IndexController extends \Phalcon\Mvc\Controller
{

    // método para la acción index
    public function indexAction()
    {

    }

}


Creando el directorio la vista para el controlador index
$> mkdir holamundo/app/views/index

Creando el archivo de vista para la acción index
$> vim holamundo/app/views/index/index.phtml
<h1> Hola Mundo desde Phalcon :) </h1>


Despliegue y prueba de la Aplicación

Crearemos un dominio ficticio en el /etc/hosts

Agregar en la última línea
$> vim /etc/hosts
127.0.1.1  www.holamundo.com


Despliegue en Apache

Creamos el virtualhost para la resolución de www.holamundo.com tomando como directorio raíz
/var/www/holamundo/public

Reemplazar el contenido
$> vim /etc/apache2/sites-enabled/000-default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/holamundo/public
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/holamundo/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Reiniciamos Apache
$> /etc/init.d/apache2 restart

Comprobamos nuestro hola mundo con el navegador
http://www.holamundo.com


Despliegue en Nginx

Creamos el virtualhost para la resolución de www.holamundo.com tomando como directorio raíz
/var/www/holamundo/public

Reemplazar el contenido
$> vim /etc/nginx/sites-enabled/default

server {
    listen   80;
    server_name www.holamundo.com;

    index index.php index.html index.htm;
    set $root_path '/var/www/holamundo/public';
    root $root_path;

    try_files $uri $uri/ @rewrite;

    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }

    location ~ \.php {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index /index.php;

        include /etc/nginx/fastcgi_params;

        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
    }

    location ~ /\.ht {
        deny all;
    }
}

Reiniciamos Nginx
$> /etc/init.d/nginx restart

Comprobamos nuestro hola mundo con el navegador
http://www.holamundo.com





sábado, agosto 18, 2007

Compiz Fusion en Ubuntu Feisty con ATI

Compiz Fusion es resultado de la reunificación de los proyectos beryl y compiz, hace poco han sacado una versión de prueba (0.52) y ya se puede configurar en Feisty, asi que manos a la obra.

Los procedimientos para instalar Compiz Fusion en Ubuntu/Kubuntu/Xubuntu Feisty y tratar de no morir (cualquier cosa puede pasar con ATI), en el intento, son:
1.- Configurar el driver de la tarjeta gráfica ATI
2.- Instalar XGL y configurar el arranque en las X
3.- Instalar Compiz Fusion y a probrar

Nota: Si ya tienes instalado y funcionando Beryl, pasa de frente al punto 3

1.- Configurar el driver de la tarjeta gráfica ATI
Ubuntu feisty tiene una nueva utilidad para configurar los drivers propietarios, que ha resultado bastante efectiva, solo tenemos que ir al menu de Sistema -> Administracion -> Gestor de controlador restringidos; ahi tenemos una opcion para configurar la tarjeta ATI (tambien sirve para Nvidia), si no lo pueden ubicar; abrir una consola y ejecutar
$> gksu -D /usr/share/applications/restricted-manager.desktop /usr/bin/restricted-manager

2.- Instalar XGL y configurar el arranque en las X
Abrimos una consola y ejecutamos
$> sudo apt-get update
$> apt-get install xserver-xgl

Para configurar el arranque de XGL creamos un archivo de arranque y una entrada en el xsession para el GDM

Archivo de arranque
Abrir una consola y ejecutar gedit, si usas kde reeplazar por kate y si usas xfce reemplazar por mousepad

Gnome
$> sudo gedit /usr/bin/startgnomexgl
#!/bin/sh
Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer & sleep 2 && DISPLAY=:1
# Gnome:(como usamos Gnome pues dejamos esta línea que sigue)
exec gnome-session

Kde
$> sudo gedit /usr/bin/startkdexgl
#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer & DISPLAY=:1
exec startkde

Xfce4
$> sudo gedit /usr/bin/startxfce4xgl
#!/bin/sh
Xgl -fullscreen :1 -ac -br -accel glx:pbuffer -accel xv:pbuffer &
sleep 4
export DISPLAY=:1
exec xfce4-session

Luego le otorgamos permisos de ejecucion
$> sudo chmod 755 /usr/bin/start*xgl

Sesión de Arranque
Gnome
$> sudo gedit /usr/share/xsessions/gnomexgl.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Gnome-XGL
Exec=/usr/bin/startgnomexgl
Icon=
Type=Application

Kde
$> sudo gedit /usr/share/xsessions/kdexgl.desktop
[Desktop Entry]
Encoding=UTF-8
Name=KDE-Xgl
Comment=Start an Xgl Session
Exec=/usr/bin/startkdexgl
Icon=
Type=Application

Xfce4
$> sudo gedit /usr/share/xsessions/xfce4xgl.desktop
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=/usr/bin/startxfce4xgl
TryExec=startxfce4
Name=XFCE4-Xgl

Luego le otorgamos permisos de ejecucion
$> sudo chmod 755 /usr/share/xsessions/*xgl.desktop

3.- Instalar Compiz Fusion y a probrar
Hasta aqui la configuracion ha sido casi idéntica a Beryl, a partir de aquí, si tienes beryl, es hora de decirle adios :'(

Desinstalado Beryl y otras versiones de compiz.

$> sudo apt-get --purge remove beryl* emerald* compiz* libcompiz*

Comentar en el sources del apt los repositorios de beryl y/o compiz y/o treviño. Agregar los nuevos repositorios para Compiz Fusion

$> sudo gedit /etc/apt/sources.list
#Beryl Treviño unstable Repo for beryl
#deb http://download.tuxfamily.org/3v1deb feisty eyecandy suspend2

deb http://ppa.dogfood.launchpad.net/amaranth/ubuntu feisty main restricted universe multiverse

Actualizar lista de paquetes, e instalar Compiz Fusion
$> sudo apt-get update;
$> sudo apt-get install compiz-core libdecoration0 compiz compizconfig-settings-manager compiz-kde emerald emerald-themes

Ejecutar Compiz Fusion
Reiniciamos el PC elegimos en session, Gnome-XGL o KDE-Xgl o Xfce4-XGL

Presionamos la tecla Alt+F2
y saldra un diálogo para ejecutar un comando, escribimos
compiz --replace

Puede que en kde y xfce no se vea el decorador de ventanas, asi que ejecutamos nuevamente Alt+F2 y escribimos
emerald --replace

Adicionalmente en Gnome puede que no se vean bien los controles e íconos presionamos Alt+F2 y escribimos
gnome-settings-daemon

Finalmente si queremos personalizar el comportamiento y los efectos de compiz fusion buscamos en la lista de programas CompizConfig Settings Manager o ejecutamos Alt+F2 y escribimos
ccsm

En el siguiente post escribire la guía de personalización de Compiz Config, cualquier duda publiquen su comentario.

martes, junio 19, 2007

Guía de LAMP (Linux Apache PHP MySQL) para torpes III - El Editor Quanta

Vamos ahora a familiarizarnos con el editor quanta para la programación de nuestros scripts.
Para esto abrimos el editor quanta desde el menu de inicio->desarrollo->Quanta
o abrimos una consola y ejecutamos
$> quanta
Lo que vamos a hacer ahora es configurar las opciones del editor, para esto vamos a la opción Settings->Configure Editor
luego aprecerá un diálogo para configurar las opciones.
Las opciones que se configuran son:
Appareance:
- Quitar Dynamic word wrap (Opcional)
- Show line numbers
Editing:
- Quitar Show tabulators
- Tab width: 4
Open Save:
- Quitar Backup on Save-> Local files

Configurar la documentación de php en quanta.
Bajamos de la página oficial de php el manual en múltiples archivos en html
http://www.php.net/get/php_manual_es.tar.gz/from/a/mirror
Luego desempaquetamos el manual en el directorio de documentación de quanta

$> tar -zxvf php_manual_es.tar.gz
$> sudo mv html/ /usr/share/apps/quanta/doc/php

Configurar el depurador de php en quanta
Esta parte es un poco avanzada y ya no para tan torpes, pero un debugger es una muy buena herramienta para programar sin errores; algo que muchos programadores de PHP obvian al momento de hacer sus aplicaciones. Vamos a configurar quanta con soporte a DBG y xampp con soporte a Xdebug que es una extensión nativa de php para depurar los scripts.

1.- Instalar el DBG para quanta
$> sudo apt-get install kdewebdev-dbg

2.- Instalar el paquete XAMPP Development package
lo bajamos de la página de xampp
http://www.apachefriends.org/en/xampp-linux.html
y lo descomprimimos en el opt
$> sudo tar -zxvf xampp-linux-devel-1.6.2.tar.gz -C /opt

3.- Instalar los paquetes para compilar xdebug
$> sudo apt-get install gcc autoconf make automake bison flex g++ libtool re2c

4.- Bajamos la última versión de xdebug de http://xdebug.org/install.php y compilamos

$> tar -zxvf xdebug-2.0.0RC4.tgz
$> cd xdebug-2.0.0RC4
$> phpize
$> ./configure --with-php-config=/opt/lampp/bin/php-config --enable-xdebug
$> make
$> sudo make install

5.- habilitar extensión en el php.ini y agregar al final
$> sudo gedit /opt/lampp/etc/php.ini
zend_extension="/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"

Reiniciar XAMPP
$> sudo su -
$> lampp restart

Verificamos la instalación de Xdebug en XAMPP, abrimos en el navegador la dirección
http://localhost/xampp/phpinfo.php
y en la parte donde sale powered by Zend 2 se ve el añadido "with Xdebug v2.0.0RC4"

Cerramos y volvemos a abrir el quanta y ya estamos listos para hacer nuestro primer proyecto en LAMP con un entorno de debug incluido, esto lo veremos en el próximo tutorial

miércoles, mayo 16, 2007

Guía de LAMP (Linux Apache PHP MySQL) para torpes II - Entorno y Herramientas

Bien asumimos, que hemos instalado Linux y XAMPP y ya pasamos todos los puntos del 1er tutorial, ha llegado el momento de preocuparnos por el entorno de ejecución y las herramientas de desarrollo.

El Entorno de Ejecución.
En Linux las variables de entorno juegan un papel crucial para ejecutar comandos y definir variables que son asumidas por los procesos. Para nuestro caso lo mas importante es definir en la variable de entorno $PATH, que es la variable que le indica al sistema donde estan los directorios de los archivos ejecutables. En linux no interesa la extension de un archivo para que sea ejecutable, basta que tenga permisos de ejecución.
Para ver el $PATH actual basta ejecutar
$> echo $PATH

Para modificar permanentemente el valor del $PATH escribimos ese valor en el archivo /etc/profile y eso es valido para cualquier distribución

$>sudo su -

Con esto accedemos como root y ya no necesitamos poner sudo al inicio

$> echo "export PATH=/opt/lampp:/opt/lampp/bin:\$PATH" >> /etc/profile


Cerramos la sessión de escritorio y volvemos a entrar para ver los cambios en la consola

$> echo $PATH

Luego ya podemos ejecutar el comando lampp (administracion de servicios), php (interprete de consola), pear (administracion de librerias de php) y mysql (consola de comando de mysql)
$> sudo su -
$> lampp start

$> php -i
$> pear list
$> mysql
mysql> select version();
mysql> quit;

Ahora hay un detalle, cada vez que reiniciamos nuestra pc tenemos que estar arracando el XAMPP, para evitar esto basta poner la ejecucion de XAMPP en el archivo /etc/rc.local
$>sudo su -
$> echo "/opt/lampp/lampp start" >> /etc/rc.local

de esta forma cada vez que reiniciemos la maquina se iniciará automáticamente nuestro LAMP

Herramientas de Desarrollo
Para aprender a programar, no hay mejor forma que escribiendo código, y para esta ardua tarea la mejor herramienta para PHP en Linux es quanta, no viene instalado por defecto así que manos a la obra.

$> sudo apt-get update
$> sudo apt-get install quanta kdewebdev kfilereplace kimagemapeditor kommander kompare tidy

Para los usuarios de otras distribiciones verificar por los nombres de paquetes.

Una vez que hemos instalado nuestra herramienta de desarrollo, crearemos un directorio donde pondremos y probaremos nuestros ejemplos de código
$> sudo mkdir /opt/lampp/htdocs/tutolamp
$> sudo chmod 777 /opt/lampp/htdocs/tutolamp
con esto le estamos dando permisos totales de escritura en el directorio para poder grabar nuestros ejemplos desde quanta. En el siguiente tutorial nos familiarizaremos con el uso de quanta y nuestros primeros scripts.

Guía de LAMP (Linux Apache PHP MySQL) para torpes I - Inicio

Una de mis principales ofuscaciones cuando he dictado cursos de LAMP, es que; los alumnos si bien llevaban las clases en Linux, cuando estaban en sus casas o trabajos, usaban winbugs y no veian Linux hasta la clase siguiente, bueno esta es una guía para aquellos usuarios "torpes" en Linux, que saben que es el mejor sistema operativo para programar, pero le tienen miedo por fama de ser complicado o diferente. Ubuntu es una distribución que ha facilitado enormemente las tareas de escritorio, haciendolo incluso mas sencillo que Window$.
Bien empecemos.
Primero y antes que nada tienes que Instalar Ubuntu Linux, de preferencia y muy recomendada la última versión, ¿Qué no sabes instalar o le tienes miedo a Ubuntu? aquí unos links para que instales y pases este crucial punto.
http://www.guia-ubuntu.org/index.php?title=Portada
http://tuxhuellas.com/2007/04/22/introduccion-a-ubuntu-704/

Segundo es necesario instalar Apache, PHP y MySQL.
Antes que nada tienes que perderle miedo a la consola
en Gnome accedes a Aplicaciones->Accesorios->Terminal (Gnome Terminal)
en KDE Inicio->Sistema->Programa de Terminal (Konsole)

Luego viene la instalación propiamente dicha y hay varias formas para lograr esto.
La primera y mas recomendada en entornos de producción es hacerlo con los paquetes que tiene la propia distribución de Linux; en Ubuntu sería
$> sudo apt-get install php5 mysql-server php5-mysql php5-gd (No ejecutar para este manual)

La segunda es por código fuente, pasamos de este punto para un post mas avanzado.

La tercera y la que usaremos para este turorial es XAMPP
Es una versión de Apache, PHP y MySQL precompilada con muchas extensiones y lista para usar en el /opt solo hay que descomprimir el archivo y ya esta. Lo mejor de todo es que funciona en la mayoría de distribuciones de Linux y se puede trasladar todo el entorno de trabajo comprimiendo solo la carpeta /opt/lampp. Comenzemos bajando la última versión de xampp
de http://www.apachefriends.org el link directo es
http://sourceforge.net/project/showfiles.php?group_id=61776&package_id=60248

una vez que lo bajamos descomprimimos el archivo en el /opt
$> sudo tar -zxvf xampp-linux-XX.YY.ZZ.tar.gz -C /opt
XX.YY.ZZ es la version que bajamos, recuerda que si has bajado con firefox, por defecto lo baja en el Desktop, entonces el comando seria $> sudo tar -zxvf Desktop/xampp-linux-XX.YY.ZZ.tar.gz -C /opt

Luego ejecutamos xampp para arrancar Apache PHP y MySQL
$> sudo /opt/lampp/lampp start

Abrimos nuestro navegador firefox y ponemos la dirección http://localhost y ya tenemos
las últimas versiones de Apache, PHP y MySQL para programar. ¿fácil no?, bien pero ustedes dirán aún no he programado nada. Tranquilo; empezaremos por el clásico Hola Mundo

$> sudo gedit /opt/lampp/htdocs/holamundo.php
  1. <?php
  2. echo "hola mundo";
  3. ?>


Guardamos el archivo y abrimos en el navegador http://localhost/holamundo.php

En el siguiente post preparemos el entorno y herramientas de desarrollo para sacarle jugo a nuestro LAMP.

Nota: Para los que no usan Ubuntu, basta con acceder como root y ejecutar todos los comandos sin el sudo al inicio

lunes, abril 30, 2007

Beryl en Ubuntu Feisty con ATI

A raiz del ultimo FLISOL (donde di un taller de programación web en la San Martín), uno de los asistentes me solicitó que le ayudara a configurar Beryl en su laptop con una ATI Xpress 200M a raíz de esta solicitud, aproveche para hacer un mini howto de Beryl en Feisty con ATI.

Los procedimientos para instalar beryl en Ubuntu/Kubuntu/Xubuntu Feisty y no morir en el intento son:
1.- Configurar el driver de la tarjeta gráfica ATI
2.- Instalar XGL y configurar el arranque en las X
3.- Instalar Beryl y a probrar

1.- Configurar el driver de la tarjeta gráfica ATI
Ubuntu feisty tiene una nueva utilidad para configurar los drivers propietarios, que ha resultado bastante efectiva, solo tenemos que ir al menu de Sistema -> Administracion -> Gestor de controlador restringidos; ahi tenemos una opcion para configurar la tarjeta ATI (tambien sirve para Nvidia), si no lo pueden ubicar; abrir una consola y ejecutar
$> gksu -D /usr/share/applications/restricted-manager.desktop /usr/bin/restricted-manager

2.- Instalar XGL y configurar el arranque en las X
Abrimos una consola y ejecutamos
$> sudo apt-get update
$> apt-get install xserver-xgl

Para configurar el arranque de XGL creamos un archivo de arranque y una entrada en el xsession para el GDM

Archivo de arranque
Gnome
$> sudo gedit /usr/bin/startgnomexgl
#!/bin/sh
Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer & sleep 2 && DISPLAY=:1
# Gnome:(como usamos Gnome pues dejamos esta línea que sigue)
exec gnome-session

Kde
$> sudo gedit /usr/bin/startkdexgl
#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer & DISPLAY=:1
exec startkde

Xfce4
$> sudo gedit /usr/bin/startxfce4xgl
#!/bin/sh
Xgl -fullscreen :1 -ac -br -accel glx:pbuffer -accel xv:pbuffer &
sleep 4
export DISPLAY=:1
beryl-manager
exec xfce4-session

Luego le otorgamos permisos de ejecucion
$> sudo chmod 755 /usr/bin/start*xgl

Sesión de Arranque
Gnome
$> sudo gedit /usr/share/xsessions/gnomexgl.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Gnome-XGL
Exec=/usr/bin/startgnomexgl
Icon=
Type=Application

Kde
$> sudo gedit /usr/share/xsessions/kdexgl.desktop
[Desktop Entry]
Encoding=UTF-8
Name=KDE-Xgl
Comment=Start an Xgl Session
Exec=/usr/bin/startkdexgl
Icon=
Type=Application

Xfce4
$> sudo gedit /usr/share/xsessions/xfce4xgl.desktop
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=/usr/bin/startxfce4xgl
TryExec=startxfce4
Name=XFCE4-Xgl

Luego le otorgamos permisos de ejecucion
$> sudo chmod 755 /usr/share/xsessions/*xgl.desktop

3.- Instalar Beryl y a probrar
Versión Universe (0.20, estable)
$> sudo apt-get install beryl beryl-plugins beryl-plugins-unsupported beryl-manager beryl-settings emerald emerald-themes

Versión Treviño (0.30 inestable)
$> sudo gedit /etc/apt/sources.list
#Beryl Treviño unstable Repo for beryl
deb http://download.tuxfamily.org/3v1deb feisty eyecandy suspend2

Actualizar key
#>wget http://download.tuxfamily.org/3v1deb/DD800CD9.gpg -O- | sudo apt-key add -

Actualizar listas de Paquetes
#> sudo apt-get update

#>Instalar Paquetes para beryl
sudo apt-get install xserver-xgl beryl beryl-core beryl-plugins beryl-plugins-unsupported emerald emerald-themes beryl-settings beryl-manager beryl-settings-bindings

Agregar en el inicio de sesion de Gnome y/o kde el comando beryl-manager.
Adicionalmente en Gnome agregar gnome-settings-daemon.

En gnome esta en Sistema->Preferencias->Sesiones
En KDE
$>
ln -s /usr/bin/beryl-manager ~/.kde/Autostart/beryl-manager
En XFCE4 no es necesario porque ya esta configurado en el script de arranque

Reiniciamos el PC elegimos en session, Gnome-XGL o KDE-Xgl o Xfce4-XGL y a cruzar los dedos :P

jueves, noviembre 16, 2006

Fameworks en JavaScript y Ajax (II)

Siguiendo con la segunda parte de los frameworks para el desarrollo en Ajax y JavaScript voy a comentar acerca de los frameworks implementados en un lenguaje de Servidor, y que luego generarán automáticamente código en Ajax.
De todos los frameworks; destacan principalmente aquellos que están hechos en Java; pues son, los mas completos y elaborados; miencionaré los principales y al final, describiré algunos frameworks en otros lenguajes.

Frameworks hechos en Java

Google Web Toolkit a.k.a GWT, este framework se destaca por ser el toolkit oficial de Google y que ha sido empleado para la creación de Gmail y Google Maps, el desarrollo con estas librerías se hace usando 100% el lenguaje Java; y luego, al ser compilado, generará el código en HMTL, Java y JavaScript; cuenta además con un sistema de componentes, que permite su extensibilidad y desarrollo por parte de la comunuidad. GWT cuenta actualmente con una herramienta visual (de pago) como plugin de eclipse.

Open Laszlo Es un framework de tecnologías RIA, que genera en el front end GUIs en Flash o DHTML; es la alternativa OpenSource a Flex de Adobe, pero además de generar flash; también puede generar Ajax. Cuenta con un lenguaje propio (LZX), para la creacion de interfaces y que luego al compilar generará el front end final.
Cuenta además con un IDE opensource, para eclipse IDEforLaszlo

ZK Es un framework que usan como lenguaje de marcado ZUL (variante de XUL), y para el scripting usa codigo Java; cuenta con una amplia variedad de widgets y es de fácil uso.

DWR A diferencia de los anteriores frameworks DWR solo cubre la parte de comunicación remota entre JavaScript y Java (similar a JSON), la diferencia relevante respecto a este; es que DWR genera automáticamente código JavaScript desde los métodos públicos de un Java Bean, y crea objetos Java que son pasados desde objetos JavaScript como argumentos de los métodos públicos del Bean; cuenta además con mecanismos de seguridad; es una opción muy interesante si se quiere integrar con frameworks de javascript descritos en la primera parte de este post.

ECHO2 Es otro framework que cuenta con multiples widgets para el desarrollo en Ajax y cuenta ademas con plugin para eclipse (de pago) para la edición visual.

Rialto; aunque lo mencione en el anterior artículo como un framework de javascript; Rialto cuenta además con extensiones para trabajar con Taglibs y JSF y además con otros lenguajes de servidor como PHP, .Net y Python

Frameworks y/o Librerías en otros lenguajes de servidor
Frameworks para PHP:
Sajax y Xajax, similares a DWR pero mas limitados. soportan solo funciones de PHP
PEAR HTML_Ajax; de la misma línea de DWR soporta clases, pero es solo de una dirección; la mayor parte de librerías existente en PHP son de este tipo.
PRADO experimental; Prado es un sistema de componentes gráficos para PHP5, similar a Asp.Net cuenta con extensiones experimentales para Ajax.
Otros frameworks con características Ajax son Symfony, CakePHP

Fameworks para .NET
Atlas, es la implementación oficial de Microsoft para .NET, tiene integración con ASP.Net, C#, VB (aqui la única gran pregunta de siempre; es si es compatible con otros browsers diferentes a I.E.)
MagicAjax, Conjunto de Widgets para usar con Asp.Net

Otros Lenguajes
RubyOnRails, el framework por excelencia para Ruby, viene integrado con scriptaculous y tiene clases en Ruby que generan el código en Ajax.

Turbogears y Django; frameworks para Python con características y funciones para soportar Ajax

Bueno para terminar, una recomendación muy importante a parte de la decisión de usar tal o cual framework; de nada te sirve hacer los mejores efectos o pintar bonitas interfaces si no se domina JavaScript; el pilar de Ajax y de la Web 2.0, es este lenguaje, tenganlo muy en cuenta.
En los futuros posts ire agregando pequeños tutoriales de JavaScript y Ajax.
Saludos a todos y esta vez prometo blogear mas seguido (va en serio :P).

Fameworks en JavaScript y Ajax (I)

Vuelvo, después de un largo tiempo de silencio .......
Les comento que me estoy dedicando a programar en Ajax y en el tiempo que he estado investigando, encontré algunos frameworks interesantes, que les puede servir de ayuda para sus proyectos.
Voy a clasificar los frameworks en 2 partes: aquellos que son enteramente hechos en JavaScript (ese lenguaje que muchos creen es solo para menus y validaciones); que son los que prefiero; y no dependen de una implementación en el servidor, y aquellos que están implementados en un lenguaje de servidor (java, php, etc) y que después generan Ajax automáticamente; en esta primera parte explicaré sobre los frameworks en JavaScript.

Fameworks Ligeros en JavaScript

DojoToolkit: Hoy por hoy el toolkit mas completo existente para la web 2.0, Dojo es una fundación similar a lo que sería eclipse, y ya tiene varios miembros ; entre ellos IBM y SUN.
Dojo Cuenta con un juego completo de widgets y elementos de layout tal como se pueden ver en los demos de la página oficial. Una de las características interesantes de dojo es su estructura modular y la posibilidad de generar dojos "personalizados" a través de un script compilador para Ant (aqui requiere Java), cuenta con herramienta de test y depuración de scripts.
Otra característica por demás interesante es que dojo cuenta dentro de sus modulos una extensión para el desarrollo gráfico (gfx), que entre otras cosas permite que; usando los componentes de dojo gfx, se generen elementos gráficos vectoriales en SVG (estándar soportado por firefox,opera,konqueror,safari) o VML (cuasi estándar soportado solo por ya saben quien: Internet Exploited).
www.xdraw.org es la web de referencia para el modulo gfx.
Si piensas usar Ajax para un proyecto mediano y grande este es; a mi opinion, el mejor framework en javascript.

Prototype y Scriptaculous El primero es una libreria que añade funcionalidades interesantes para trabajar con DOM y Ajax asi como artificios en Javascript; a diferencia de dojo es pequeño y sirve de base para otras librerias extendidas como scriptaculous y openrico.
Scriptaculous añade muchas funcionalidades como animaciones y drag and drop; mientras open rico cuenta con acordeones y tablas. Los métodos abreviados para manipular DOM y otras funciones, han hecho de prototype la librería mas popular para usar con JavaScript y Ajax.

Yahoo! UI Library (YUI) En la misma línea de DojoToolkit (y principal competencia); YUI es un framework muy completo mantenido por Yahoo, es muy modular y cuenta con una creciente comunidad.

Otras librerías también interesantes (en la línea de prototype y scriptaculous) son
Mootols y Mochikit (frameworks ligeros).

Un Framework alternativo a Prototype es JQUERY, esta librería; al igual que prototype, cuenta con atajos de códigos, incluso más elaborados que prototype y permite trabaja con CSS y Xpath.

Frameworks Pesados (Juego de Herramientas tipo R.I.A.)
Estos frameworks se caracterizan por tener un todo integrado, de
una colección de widgets y librerías y a diferencia de Dojo no son tan modulares.
Estos frameworks son pensados como capas de presentación completas para una aplicación determinada.

RIALTO es un framework que puede usarse con JavaScript puro o con una tecnología de servidor; cuenta con múltiples widgets y entorno para creación de widgets llamado Rialto Studio.

OpenLink Ajax Toolkit a.k.a. OAT un framework, que cuenta con un diseñador de formularios en linea y un E-R para la base de datos tiene módulo de Web-Dav para guardar los archivos generados.


En el siguiente artículo explicaré sobre los frameworks hechos en un lenguaje de servidor y que generan código de Ajax.

martes, marzo 28, 2006

Primera aproximacion a Ruby

Bueno tanto escuchar sobre el Ruby on Rails; y al final decidi darle una chequeada.

Claro que para esto ni me voy a molestar en intentar ver el video ni comenzar un proyecto en 10 minutos. Tonterias.

Primero lo Primero; y esto es conocer el Lenguaje, Ruby.

Comenzare obviamente con la instalacion, dandole una chequeada a los requerimientos al rails dice que recomienda la ultima version estable; a esta fecha la 1.8.4

Observo que Ruby tiene un sistema de paquetes llamado gem (similar a pear de PHP), entonces comienzo la instalacion (para Linux obviamente) guiado de este tutorial

El lenguaje a primera vista se ve interesante. Por su filosofia "todo es objeto" (a lo Smalltalk) y el dinamismo que esta filosofia conlleva
lo convierten serio contendor a tomar en cuenta, tal hasta vez supere en uso a otros lenguajes de script como Python o PHP (solo especulaciones nada mas)

Nota: Luego publico paso a paso la instalacion en Linux desde los codigos fuentes;
con su script de rigor ;)