<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bibigeek.com</title>
	<atom:link href="http://www.bibigeek.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bibigeek.com</link>
	<description>Otro blog más de WordPress</description>
	<lastBuildDate>Sat, 06 Mar 2010 19:18:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Instalar y Configurar Nginx, FastCGI, PHP5 y MySQL</title>
		<link>http://www.bibigeek.com/2010/03/06/configurar-instalar-nginx-fastcgi-php5-mysql/</link>
		<comments>http://www.bibigeek.com/2010/03/06/configurar-instalar-nginx-fastcgi-php5-mysql/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 19:18:00 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=1000</guid>
		<description><![CDATA[Otro Post de servidores y testeado en mi ubuntu Karmic Koala  
Esta vez he dedicado algunas horas, días&#8230; en simular lo que tengo instalado en mi servidor Debian Lenny. Gracias a la tercera edición del Creant Bits al Núvol, organizado por Antoni Aloy, y en esta exposición más concretamente, gracias a Ricardo Gallir (creador [...]]]></description>
			<content:encoded><![CDATA[<p>Otro Post de servidores y testeado en mi ubuntu Karmic Koala <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Esta vez he dedicado algunas horas, días&#8230; en simular lo que tengo instalado en mi servidor Debian Lenny. Gracias a la <a title="Creant Bits al Nuvol - Meneame al Nuvol" href="http://trespams.com/2010/01/12/creant-bits-al-nuvol/" target="_self">tercera edición del Creant Bits al Núvol</a>, organizado por <a title="Blog Trespams" href="http://trespams.com/about/" target="_blank">Antoni Aloy</a>, y en esta exposición más concretamente, gracias a <a title="Blog de Ricardo Gallir" href="http://gallir.wordpress.com/" target="_self">Ricardo Gallir</a> (creador del Meneame, profesor de la Universidad de las Islas Baleares y gran profesional informático&#8230;), me di cuenta que tenía que imitar su trabajo, parte de los problemas que tenía Ricardo también los encuentro en mi servidor y se puede mejorar con las <a title="Cambio servidor de Meneame" href="http://gallir.wordpress.com/2010/01/02/cambiamos-de-apache-y-lighttpd-a-nginx/" target="_blank">novedades explicadas en la charla sobre Menéame</a> (enhorabuena).</p>
<p><strong>Conclusión </strong>de esta introducción, todo cambio puede ir mejor, pero también a peor si no sabemos como llevarlo a cabo. Para ello, estoy simulando en mi Ubuntu Karmic Koala unas condiciones similares del Servidor Debian contratado.<br />
<strong>Objetivo:</strong> cuando realice el cambio debe ser lo más breve posible y el impacto que pueda causar sea nulo (factor bastante imposible, porque ya esta peligrando el subversion con el paquete webdav).</p>
<h3>Primer punto: Instalar NGINX en Ubuntu de cero.</h3>
<p>La verdad es que su instalación es relativamente fácil, solamente con un <strong><em>sudo aptitude install nginx</em></strong> ya se instala. Pero nos aseguramos si realmente los repositorios que tenemos agregados en nuestro Karmic Koala contienen Nginx:</p>
<pre><code>
<strong>sudo aptitude search nginx</strong>

<em>#Salida de la ejecución del comando</em>
<strong>p   nginx             - small, but very powerful and efficient web server and mail proxy</strong>
</code></pre>
<p>Después de cerciorarnos que tenemos disponible el paquete <strong><em>nginx</em></strong> pasamos a su instalación, por lo tanto:</p>
<pre><code>
<strong>sudo aptitude install nginx</strong>

#Tendría que aparece algo similar a esto:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
nginx
0 paquetes actualizados, 1 nuevos instalados, 0 para eliminar y 160 sin actualizar.
Necesito descargar 329kB de ficheros. Después de desempaquetar se usarán 803kB.
Escribiendo información de estado extendido... Hecho
Des:1 http://es.archive.ubuntu.com karmic/universe nginx 0.7.62-4ubuntu1 [329kB]
Descargados 329kB en 1s (313kB/s).
Seleccionando el paquete nginx previamente no seleccionado.
(Leyendo la base de datos ...  00%
126264 ficheros y directorios instalados actualmente.)
Desempaquetando nginx (de .../nginx_0.7.62-4ubuntu1_i386.deb) ...
Procesando disparadores para man-db ...
Procesando disparadores para ufw ...
Procesando disparadores para sreadahead ...
Configurando nginx (0.7.62-4ubuntu1) ...

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho
</code></pre>
<p>En fin, hemos tardado ¿3 -5 minutos? No está mal. Para arrancar el server o pararlo, es parecido al servidor apache, pero cambiando el nombre del script:</p>
<pre><code>
<strong>sudo /etc/init.d/nginx start</strong>

#Salida en pantalla tras la ejecución del script
Starting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
nginx.</code></pre>
<p><strong><span style="color: #800000;">IMPORTANTE</span></strong>: este servidor utiliza por defecto el <strong>puerto</strong> <strong>80</strong>, al igual que Apache2. No podemos pretender tener configurado el servidor <em>apache </em>en el puerto 80 y querer también el <em>Nginx</em>, por lo tanto, hay que cambiar el puerto del Apache, desinstalarlo, &#8230; eso ya va a vuestro gusto <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h3>Segundo punto:  Instalación de PHP5 y los paquetes adicionales</h3>
<p>Os pongo todos los paquetes que se deben instalar, algunos porque son dependecias u otros porque son plugins&#8230; en fin que se deben instalar. El comando completo es:</p>
<pre><code>
sudo <strong>aptitude install</strong> php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json
</code></pre>
<p>Se descargarán bastantes kbytes de información.</p>
<p>Justo después de esto, debemos <strong>modificar el php.ini </strong>incluyendo el siguiente texto al final del fichero:</p>
<pre><code><strong>cgi.fix_pathinfo = 1</strong></code></pre>
<p>Esta línea es necesaria para que el <em><strong>PHP</strong></em> funcione correctamente como CGI.</p>
<h3>Tercer punto: Instalación del FastCGI</h3>
<p>En la instalación de este paquete tenemos un grave problema. En Ubuntu no tenemos ningún paquete explícito para instalar <strong>FastCGI</strong>, para ello necesitaremos instalar el <strong>lighttpd.</strong><br />
Debemos tener en cuenta que el <em>lighttpd</em> también es un servidor web y en su configuración está especificado que el puerto de escucha es el 80. Upss, pero el puerto 80 ya esta siendo utilizado, por lo tanto, fijáos bien en la salida por pantalla de la ejecución del siguiente comando:</p>
<pre><code>
<strong>sudo aptitude install lighttpd</strong>

#Salida de la instalación
........
Se instalarán los siguiente paquetes NUEVOS:
libterm-readline-perl-perl{a} lighttpd
0 paquetes actualizados, 2 nuevos instalados, 0 para eliminar y 160 sin actualizar.
Necesito descargar 371kB de ficheros. Después de desempaquetar se usarán 1245kB.
¿Quiere continuar? [Y/n/?] y
Escribiendo información de estado extendido... Hecho
Des:1 http://es.archive.ubuntu.com karmic/universe libterm-readline-perl-perl 1.0302-1 [52,0kB]
Des:2 http://es.archive.ubuntu.com karmic/universe lighttpd 1.4.22-1ubuntu4 [319kB]
Descargados 371kB en 1s (326kB/s).
Seleccionando el paquete libterm-readline-perl-perl previamente no seleccionado.
(Leyendo la base de datos ...  00%
126682 ficheros y directorios instalados actualmente.)
Desempaquetando libterm-readline-perl-perl (de .../libterm-readline-perl-perl_1.0302-1_all.deb) ...
Seleccionando el paquete lighttpd previamente no seleccionado.
Desempaquetando lighttpd (de .../lighttpd_1.4.22-1ubuntu4_i386.deb) ...
........
update-alternatives: <span style="color: #ff0000;"><strong>usar /usr/bin/spawn-fcgi.lighttpd para proporcionar /usr/bin/spawn-fcgi (spawn-fcgi) </strong></span>en modo automático
Syntax OK
* Starting web server lighttpd
lighttpd
2010-02-27 10:50:38: (network.c.300) <span style="color: #ff0000;"><strong>can't bind to port:  80 Address already in use</strong></span>
[fail]
invoke-rc.d: initscript lighttpd, action "start" failed.

.......
</code></pre>
<p>He señalado dos frases importantes:</p>
<ul>
<li><strong>La primera:</strong> la he remarcado por la siguiente palabra, <em>spawn-fcgi</em>, que es lo que utilizaremos como el fast-CGI</li>
<li><strong>La segunda:</strong> importante porque nos indica que el puerto 80 ya está en uso <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
</ul>
<p>Para utilizar el spawn-cgi antes deberemos eliminar del fichero de arranque el lighttpd, que realmente no utilizaremos. Entonces, ejecutamos el comando:</p>
<pre><code>
<strong>sudo update-rc.d -f lighttpd remove</strong>

#Salida por pantalla
Removing any system startup links for /etc/init.d/lighttpd ...
/etc/rc0.d/K09lighttpd
/etc/rc1.d/K09lighttpd
/etc/rc2.d/S91lighttpd
/etc/rc3.d/S91lighttpd
/etc/rc4.d/S91lighttpd
/etc/rc5.d/S91lighttpd
/etc/rc6.d/K09lighttpd
</code></pre>
<p>Con la ejecución de este último comando, el cual necesita permisos de superusuario, elimina del inicio del sistema, el arranque del lighttpd.</p>
<h3>Cuarto paso: Configuración del FastCGI (concretamente Spawn-cgi)</h3>
<p>Principalmente este paso es importante porque tenemos que modificar scripts, crear de nuevos, etc.</p>
<ol>
<li>Para que el funcionamiento del<strong> PHP FastCGI </strong>sea correcta necesitaremos indicar: <em>puerto de escucha, usuario y grupo</em>. Se puede realizar mediante la siguiente línea de código:
<pre><code>
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
</code></pre>
</li>
<li>Pero esto<strong> TIENE UN PROBLEMA</strong>, cada vez que reiniciamos el servidor o mejor dicho el PC, necesitaremos ejecutar la línea anterior. Por ello, lo que haremos será modificar el fichero de<em> administración local</em>, llamado <strong>rc.local</strong><strong>,</strong> incluyendo en el fichero la línea anterior. Esto nos permitirá no tener que añadir esta misma línea cada vez.<br />
El fichero lo encontraremos en: <strong>/etc/rc.local</strong>, y tendría que quedar una cosa así:</p>
<pre><code>
.......
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

exit 0<strong>
</strong></code></pre>
</li>
<li>Ahora tenemos que crear un script con el nombre php-fastcgi en el siguiente directorio:
<pre><code>
/etc/init.d/php-fastcgi<strong>
</strong></code></pre>
</li>
<li>Contenido del fichero deber ser el siguiente:
<pre><code>
  1 #! /bin/sh
  2 ### BEGIN INIT INFO
  3 # Provides:          php-fastcgi
  4 # Required-Start:    $all
  5 # Required-Stop:     $all
  6 # Default-Start:     2 3 4 5
  7 # Default-Stop:      0 1 6
  8 # Short-Description: Start and stop php-cgi in external FASTCGI mode
  9 # Description:       Start and stop php-cgi in external FASTCGI mode
 10 ### END INIT INFO
 11
 12 # Author: Kurt Zankl &lt;[EMAIL PROTECTED]&gt;
 13
 14 # Do NOT "set -e"
 15
 16 PATH=/sbin:/usr/sbin:/bin:/usr/bin
 17 DESC="php-cgi in external FASTCGI mode"
 18 NAME=php-fastcgi
 19 DAEMON=/usr/bin/php-cgi
 20 PIDFILE=/var/run/$NAME.pid
 21 SCRIPTNAME=/etc/init.d/$NAME
 22 PHP_CONFIG_FILE=/etc/php5/cgi/php.ini
 23
 24 # Exit if the package is not installed
 25 [ -x "$DAEMON" ] || exit 0
 26
 27 # Read configuration variable file if it is present
 28 [ -r /etc/default/$NAME ] &amp;&amp; . /etc/default/$NAME
 29
 30 # Load the VERBOSE setting and other rcS variables
 31 . /lib/init/vars.sh
 32
 33 # Define LSB log_* functions.
 34 # Depend on lsb-base (&gt;= 3.0-6) to ensure that this file is present.
</code></pre>
<p>Puedes descargar el fichero <a href="http://www.bibigeek.com/wp-content/uploads/2010/03/php-fastcgi.txt">php-fastcgi</a>.<br />
El fichero tiene la extensión .txt para que el Wordpress no lo detectase como corrupto, por ello, cuando copiéis el fichero en la ruta <strong>/etc/init.d/</strong> debéis eliminar la extensión <strong>.txt</strong>
</li>
<li>Necesitamos que este script tenga permisos de ejecutable, por lo tanto, la ejecución del siguiente comando nos permitirá que lo sea:
<pre><code>
chmod +x /etc/init.d/php-fastcgi<strong>
</strong></code></pre>
</li>
</ol>
<h3>Quinto paso: Configuración de Nginx para que funcione con FastCGI</h3>
<p>Ahora le toca a Nginx&#8230;debemos configurar a este servidor web, para que los <em>ficheros php</em> los pueda servir mediante <strong>FasfCGI.</strong> Pasemos entonces a configurar el <strong>virtualhost default de ngnix</strong>:</p>
<pre><code>
<strong>sudo vim /etc/nginx/sites-available/default</strong>

#Necesitamos añadir el texto siguente:
<strong>location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}</strong>
</code></pre>
<p>Con todo esto ya tenemos instalado nginx &#8211; php5 &#8211; FastCGI, como prueba podríamos crear un fichero info.php en el directorio raix de nginx, que según el ejemplo y el virtualhost, lo encontraremos en: <em><strong>/var/www/nginx-default/</strong></em><br />
Espero que haya servidor para algo no???? <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2010/03/06/configurar-instalar-nginx-fastcgi-php5-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizar Configurar Django con MySQL</title>
		<link>http://www.bibigeek.com/2010/02/26/utilizar-configura-django-con-mysql/</link>
		<comments>http://www.bibigeek.com/2010/02/26/utilizar-configura-django-con-mysql/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 20:02:37 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=972</guid>
		<description><![CDATA[Hola a tod@s de nuevo,
Al fiiinnnnn, por dos razones importantes:

Una, porque hacia tiempo que no escribía (y mirad que tengo temas, pero también mucho trabajo&#8230;)
Y dos&#8230; ya he podido configurar Django con MySQL. Se me resistía, una y otra vez, todo porque me faltaba instalar python-mysqldb, de lo contario siempre me daba errores.

Voy a dividir [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a tod@s de nuevo,</p>
<p>Al fiiinnnnn, por dos razones importantes:</p>
<ul>
<li>Una, porque hacia tiempo que no escribía (y mirad que tengo temas, pero también mucho trabajo&#8230;)</li>
<li>Y dos&#8230; ya he podido configurar <strong>Django con MySQL</strong>. Se me resistía, una y otra vez, todo porque me faltaba instalar python-mysqldb, de lo contario siempre me daba errores.</li>
</ul>
<p>Voy a dividir la instalación en puntos para que se pueda leer, comprender y que el seguimiento sea lo más simple posible. Empecemos.</p>
<h3>Requisitos necesarios para instalar Django con MySQL</h3>
<ul>
<li>Sistema Operativo Linux (testeado en <em><strong>Ubuntu Karmic Koala</strong></em>), para los Maqueros como en mi caso tendremos que esperar a que pueda hacer pruebas <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
<li>Versión de Django 1.1.1  instalado (esper que con versiones anteriores o posteriores no tiene porque ser diferente)</li>
<li>Motor de Base de Datos MySQL (versión, yo tengo la 5.1.37) tanto el servidor como el cliente.</li>
<li><strong>(Opcional)</strong> Instalación de MySQL Administrator y MySQL Query Browser</li>
<li>Paquete python-mysqldb (pero se explicará con más detalle)</li>
</ul>
<h3>Instalación MySQL Administrator y MySQL Query Browser</h3>
<p><strong>1-</strong> Primero buscamos el paquete <strong><em>mysql-admin</em></strong> con el siguiente comando:</p>
<pre><code>
sudo aptitude search mysql-admin
</code></pre>
<p><strong>2-</strong> La salida que obtenemos es:</p>
<pre><code>
bibigeek@macbookpro-bibigeek:~/PythonProjects$ sudo aptitude search mysql-admin
pB  mysql-admin               - Herramienta gráfica para una administración sencilla de MySQL
</code></pre>
<p><strong>3-</strong> Ahora ya ponemos a instalar el paquete <strong><em>mysql-admin</em></strong> con el comando:</p>
<pre><code>
sudo aptitude install mysql-admin
</code></pre>
<p><strong>4-</strong> La salida de la instalación es (importante fijaros en el texto en negrita y subrayado):</p>
<pre><code>
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
libgnomecups1.0-1{a} libgnomeprint2.2-0{a} libgnomeprint2.2-data{a} libgnomeprintui2.2-0{a} libgnomeprintui2.2-common{a}
libgtkhtml3.8-15{a} libmysqlclient15off{a} <span style="text-decoration: underline;"><strong>mysql-admin mysql-gui-tools-common{a} mysql-query-browser{a} </strong></span>
0 paquetes actualizados, 10 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0B/6212kB de archivos. Después de desempaquetar se usarán 22,3MB.
¿Quiere continuar? [Y/n/?] y
Escribiendo información de estado extendido... Hecho

Seleccionando el paquete libgnomecups1.0-1 previamente no seleccionado.

...

Configurando mysql-gui-tools-common (5.0r12-1ubuntu2) ...
Configurando mysql-admin (5.0r12-1ubuntu2) ...

Configurando mysql-query-browser (5.0r12-1ubuntu2) ...

Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho
</code></pre>
<p><strong>5- </strong> Pantallazo de donde podemos encontrar los programas instalados:</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-19.23.36.jpg"><img class="aligncenter size-full wp-image-979" title="MySQL Administrator - MySQL Query Browser" src="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-19.23.36.jpg" alt="" width="548" height="407" /></a></p>
<h3>Creación del Proyecto testProject</h3>
<p><strong>1-</strong> Ahora creamos el proyecto Django, un proyecto de prueba. Lo denominaré &#8220;testProject&#8221;, ejecutamos el siguiente comando:</p>
<pre><code>
django-admin.py startproject testProject
</code></pre>
<p><strong>2-</strong> Configuraremos el proyecto Django para que funcione con el motor de BD MySQL. Alerta, estoy suponiendo que el usuario test y la Base de Datos testDB está creado. Os adjunto los valores a modificar en el fichero settings.py y también adjunto un pantallazo:</p>
<pre><code>
12 DATABASE_ENGINE = 'mysql'
13 DATABASE_NAME = 'testDB'
14 DATABASE_OPTIONS ={"init_command":"SET storage_engine=INNODB"}
15 DATABASE_USER = 'test'
16 DATABASE_PASSWORD = 'test'
17 DATABASE_HOST = 'localhost'
18 DATABASE_PORT = '3306'
</code></pre>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.09.56.jpg"><img class="aligncenter size-medium wp-image-982" title="Fichero settings.py MySQL" src="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.09.56-300x170.jpg" alt="" width="300" height="170" /></a><br />
<strong><span style="color: #ff0000;">IMPORTANTE:</span></strong> fijaos que he puesto una opción que no viene por defecto el fichero settings.py, que es el <strong>DATABASE_OPTIONS</strong>. Esta opción es utilizada para especificarle a Django que las tablas que tienen que crear en MySQL son de la tecnología <strong>INNODB</strong>.</p>
<p><strong>3-</strong> Ahora ejecutamos el comando <em><strong>&#8220;syncdb&#8221;</strong></em> para crear la estructura de Base de Datos para Django. Veréis por los siguiente pantallazos y textos expuestos, que no funciona y nos mostrara un error. Veamosló todo:</p>
<pre><code>
bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ <em><strong>python manage.py syncdb</strong></em>
Traceback (most recent call last):
File "manage.py", line 11, in &lt;module&gt;
execute_manager(settings)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 362, in execute_manager
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 303, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 195, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 221, in execute
self.validate()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/validation.py", line 22, in get_validation_errors
from django.db import models, connection
File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 41, in &lt;module&gt;
backend = load_backend(settings.DATABASE_ENGINE)
File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 17, in load_backend
return import_module('.base', 'django.db.backends.%s' % backend_name)
File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/mysql/base.py", line 13, in &lt;module&gt;
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
</code></pre>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.10.55.jpg"><img class="aligncenter size-medium wp-image-984" title="Python manage.py syndb" src="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.10.55-300x171.jpg" alt="" width="300" height="171" /></a></p>
<h3>Instalación del paquete Python-mysqldb</h3>
<p>Como habréis notado y visto, cuando hemos ejecutado el syncdb nos ha proporcionado una serie de errores. Esto lo solucionaremos con la instalación del paquete &#8220;python-mysqldb&#8221;. Para instalarlo podemos ejecutar los siguientes comandos y os tendría que aparecer en la salida algo similar a esto:</p>
<pre><code>
bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ <strong>sudo aptitude search python-mysql</strong>
[sudo] password for bibigeek:
p   python-mysqldb                       - Una interfaz Python para MySQL
p   python-mysqldb-dbg              - Una interfaz Python para MySQL (extensión de depuración)

bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ <strong>sudo aptitude install python-mysqldb</strong>
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
python-mysqldb
0 paquetes actualizados, 1 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0B/98,5kB de archivos. Después de desempaquetar se usarán 352kB.
Escribiendo información de estado extendido... Hecho
Seleccionando el paquete python-mysqldb previamente no seleccionado.
(Leyendo la base de datos ...  00%
153203 ficheros y directorios instalados actualmente.)
Desempaquetando python-mysqldb (de .../python-mysqldb_1.2.2-10_i386.deb) ...
Configurando python-mysqldb (1.2.2-10) ...
Procesando disparadores para python-support ...
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho
</code></pre>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.15.47.jpg"><img class="aligncenter size-medium wp-image-987" title="Instalacion de python-mysql" src="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.15.47-300x172.jpg" alt="" width="300" height="172" /></a></p>
<h3>Resultado final de Django con MySQL</h3>
<p>1- Si en estos momentos ejecutamos el syncdb tendremos el siguiente resultado (texto y pantallazo):</p>
<pre><code>
bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ <strong>python manage.py syncdb</strong>
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'bibigeek'): demo
E-mail address: bibigeek@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Message model
</code></pre>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.19.24.jpg"><img class="aligncenter size-medium wp-image-988" title="Ejecución correcta del syncdb" src="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.19.24-300x171.jpg" alt="" width="300" height="171" /></a></p>
<p>Para que podáis comprobar que esta se ha echo realidad (es que al fin lo he podido hacer funcionar&#8230;) os ajunto un pantallazo del MySQL Administrator con el diseño del schema testDB, veamosló:</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.40.17.jpg"><img class="aligncenter size-medium wp-image-989" title="MySQL Administrator con las tablas de Django" src="http://www.bibigeek.com/wp-content/uploads/2010/02/Captura-de-pantalla-2010-02-26-a-las-17.40.17-299x179.jpg" alt="" width="299" height="179" /></a>Como habréis visto en la imagen, las tablas creadas son <strong>INNODB</strong>, importante <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Espero que os haya servido de algo y suerte!!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2010/02/26/utilizar-configura-django-con-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java y los ficheros .properties</title>
		<link>http://www.bibigeek.com/2010/02/01/java-y-los-ficheros-properties/</link>
		<comments>http://www.bibigeek.com/2010/02/01/java-y-los-ficheros-properties/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 07:56:18 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=953</guid>
		<description><![CDATA[En el trabajo estamos constantemente al pie del cañon para introducir mejoras, nuevos métodos de trabajo, nuevas tecnologías o simplemente mejorando las tecnología actual (no siempre se puede)&#8230; y en un nuevo proyecto que está llevando a cabo Andrés Nieto, tenemos la posibilidad de introducir MUCHAS MEJORAS y una de ellas es: &#8220;Leer de ficheros [...]]]></description>
			<content:encoded><![CDATA[<p>En el trabajo estamos constantemente al pie del cañon para introducir mejoras, nuevos métodos de trabajo, nuevas tecnologías o simplemente mejorando las tecnología actual (no siempre se puede)&#8230; y en un nuevo proyecto que está llevando a cabo <a title="Blog de Anieto2k" href="http://www.anieto2k.com" target="_blank">Andrés Nieto</a>, tenemos la posibilidad de introducir MUCHAS MEJORAS y una de ellas es: <strong><em>&#8220;Leer de ficheros .properties&#8221;</em></strong></p>
<p>La verdad que no pensaba que fuera tan fácil, pero para aquellos que deseen realizar aquí les dejo la solución de cómo hacerlo y algunos consejos <em>JAVADIENSES</em> <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  &#8230;</p>
<h3>Leer de ficheros PROPERTIES desde JAVA (teoría)</h3>
<p><strong>1.</strong> Primera cosa a tener en cuenta, necesitamos el nombre de un fichero con la extensión .properties y la ruta pertinente.<br />
Supongamos que estamos en la raiz, ejemplo:<br />
<strong>- Mac:</strong> /Users/<em>&lt;nombre usuario&gt;</em>/config.properties<br />
<strong>- Linux:</strong> /home/<em>&lt;nombre usuario&gt;</em>/config.properties<br />
<strong>- Windows:</strong> C:/config.properties</p>
<p><strong>2.</strong> Necesitaremos abrir el fichero y leer su contenido. Para ello utlizaremos la clase <strong>FileInputStream</strong>.</p>
<p><strong>3.</strong> Después de abrirlo ya podremos utilizar la clase <strong>Property</strong>.</p>
<h3>Código para leer ficheros .properties en  Java (ejemplo prático)</h3>
<p><strong>1. </strong>Veamos como abrimos el fichero con la clase Java:</p>
<pre><code>
/* Atributos necesarios */
FileInputStream file = null;
/* Abrimos el fichero properties para leer de el */
try {
   file = new FileInputStream(pathName);
} catch (FileNotFoundException ex) {
   ex.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}
</code></pre>
<p><strong>2.</strong> Dado un objeto <strong>FileInputStream</strong> creamos un objeto <strong>Property</strong> y leemos del fichero:</p>
<pre><code>
/* Instanciamos el objeto Properties */
Properties propers = new Properties();
try {
   propers.load(file);
} catch (IOException ex) {
   ex.printStackTrace();
}
</code></pre>
<p><strong>3. </strong>Ahora necesitamos obtener un objeto HashMap para leer u obtener el resultado:</p>
<pre><code>
/**
 * METODO PUBLICO QUE DEVUELVE UN OBJETO HASHMAP CON LOS VALORES
 * DEL FICHERO .PROPERTIES
 *
 * @param name, string con el path y el nombre del fichero .properties a leer
 * @return HashMap con los valores, de lo contrario devolvemos null
 */
public HashMap getProperties(String name) {
	/* Atributos necesarios */
	FileInputStream file = null;

	/* Abrimos el fichero properties para leer de el */
	try {
		file = new FileInputStream(name);

		/* Instanciamos el objeto Properties */
		Properties propers = new Properties();
		try {
			propers.load(file);
		} catch (IOException ex) {
			ex.printStackTrace();
		}finally {
			try {
				/* Cerramos el fichero desde de leerlo */
				file.close();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}

		/* Return */
		if (!propers.isEmpty())
			return new HashMap(propers);

	} catch (FileNotFoundException ex) {
		ex.printStackTrace();
		return null;
	} catch (IOException e) {
		e.printStackTrace();
		return null;
	} catch (NullPointerException nulo){
		nulo.printStackTrace();
		return null;
	} catch (Exception excep){
		excep.printStackTrace();
		return null;
	}

	return null;
}
</code></pre>
<h3>Conclusión</h3>
<p>Con este útlimo método podremos obtener un objeto <strong>HashMap </strong>con los valores de un fichero <em>.properties cualquiera</em>. En el caso que se produzca un error, devolveremos null (eso ya va a vuestro gusto, tambien podríais devolver un <strong><em>HashMap vacío</em></strong> así: <strong>&#8220;</strong><em>return new HashMap()</em><strong>&#8220;</strong> ).</p>
<p>Espero que os haya servido!!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2010/02/01/java-y-los-ficheros-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nexus One de Google ya a la venta</title>
		<link>http://www.bibigeek.com/2010/01/06/nexus-one-de-google-ya-a-la-venta/</link>
		<comments>http://www.bibigeek.com/2010/01/06/nexus-one-de-google-ya-a-la-venta/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 09:16:17 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=945</guid>
		<description><![CDATA[Día 5 Enero 2010 ¡Nexus One de Google se ha presentado!
Ya podemos comprar el Nexus One en el mercados US, creo que lo tendremos por Primavera del 2010.
He estado siguiendo su presentación desde una página web que nos iba contanto como iba la conferencia paso a paso, haciendo fotografías, etc. Creo que es un móvil [...]]]></description>
			<content:encoded><![CDATA[<h3>Día 5 Enero 2010 ¡Nexus One de Google se ha presentado!</h3>
<p>Ya podemos<strong> comprar el Nexus One en el mercados US</strong>, creo que lo tendremos por Primavera del 2010.</p>
<p>He estado siguiendo su presentación desde <a title="Live Google Nexus One" href="http://live.gdgt.com/2010/01/05/live-google-nexus-one-launch-event-coverage/#10-00-49-am" target="_blank">una página web</a> que nos iba contanto como iba la conferencia paso a paso, haciendo fotografías, etc. Creo que es un móvil a tener en cuenta, tanto por el Hardware que lleva consigo como la mejora del Sistema Operativo Android, la versión 2.1. Como dicen los de google, <em>&#8220;un micro PC&#8221;</em> que te acompaña constantemente.</p>
<p>Siguiendo las imágnes que ponían en la presentación y leyendo, se me iban ocurriendo preguntas:</p>
<ul>
<li><strong>¿Desea Google comerse el mercado móvil? Desbancar a Apple del Mercado? </strong>(aquí en España lo que tendrían que hacer los de Apple es quitar la exclusiva del iPhone a Telefonica&#8230; vaya vergüenza)</li>
<li><strong>¿Pordrá llegar a ser tan fluido como el iPhone 3GS?</strong></li>
<li><strong>¿Están optimizando al máximo el Android para Nexus One? ¿Quá pasará con el resto de compañías?</strong></li>
<li><strong>El precio ronda unos 179$, espero que para España sea más económico&#8230;¿cuales serán las condiciones con Vodafone?</strong></li>
<li><strong>¿Habrán mejorado la vida de la batería?</strong></li>
</ul>
<p>Estas son algunas de las preguntas que me iban saliendo <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> , pero bueno, si surge alguna más de interesante o alguien desea colaborar la pondré con mucho gusto.</p>
<p><a title="Nexus One Google" href="http://www.google.com/phone/" target="_blank">Link a Nexus One de Google</a> para que podáis navegar un poco dentro de las aplicaciones.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2010/01/06/nexus-one-de-google-ya-a-la-venta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Backup de Base de Datos con mysqldump</title>
		<link>http://www.bibigeek.com/2010/01/06/backup-de-base-de-datos-con-mysqldump/</link>
		<comments>http://www.bibigeek.com/2010/01/06/backup-de-base-de-datos-con-mysqldump/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 23:27:59 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=934</guid>
		<description><![CDATA[Hola de nuevo, ya vuelvo a estar con algún que otro consejo.
Copia de Seguridad o Backup con mysqldump
Estos días he tenido que hacer la copia de seguridad de mis Base de Datos de MySQL manualmente y como no&#8230; lo he tenido que hacer con el comando mysqldump (link man mysqldump).
En mi caso he tenido que [...]]]></description>
			<content:encoded><![CDATA[<p>Hola de nuevo, ya vuelvo a estar con algún que otro consejo.</p>
<h3>Copia de Seguridad o Backup con mysqldump</h3>
<p>Estos días he tenido que hacer la copia de seguridad de mis Base de Datos de MySQL manualmente y como no&#8230; lo he tenido que hacer con el comando mysqldump (<a title="Man mysqldump" href="http://www.manpagez.com/man/1/mysqldump/" target="_blank">link man mysqldump</a>).</p>
<p>En mi caso he tenido que hacer el backup de TODAS las Base de Datos que tengo y para ello he ejecutado el siguiente comando:</p>
<pre><code>
<strong>sudo mysqldump -A --password=<em>CLAVE</em> --user=<em>USUARIO</em> &gt; backupDB_5Enero2010.sql</strong>
</code></pre>
<p>Se pueden utilizar varios que otras opciones, por ejemplo:</p>
<p><strong>1. </strong>Copia de Seguridad &#8211; Backup con un comando más simple:</p>
<pre><code>
<strong>sudo mysqldump --opt &gt; salidaBackup.sql</strong>
</code></pre>
<p><strong>2. </strong>Copia de seguridad lo más rápidamente, ejectivamente de una Base de Datos concreta:</p>
<pre><code>
<strong>sudo mysqldump --opt --password=<em>CLAVE</em> --user=<em>USUARIO</em> <em>BASEDATOS</em> &gt; salidaBackup.sql</strong>
</code></pre>
<p><strong>3. </strong>Copia de seguridad de una sola tabla de una Base de Datos:</p>
<pre><code>
<strong>sudo mysqldump --opt --user=<em>USUARIO</em> --password=<em>CLAVE BASEDATOS TABLA</em> &gt; salitaTabla.sql</strong>
</code></pre>
<p>Esto es lo que he podido probar pero se pueden hacer bastantes combinaciones posibles. Ahora veamos como podemos restaurar estas copias de seguridad desde comandos, nuevamente.</p>
<h3>Restaurar Copias de Seguridad Backup con mysqldump</h3>
<p>Al igual que he explicado en la parte superior, podemos hacer la restauración del fichero de distintas maneras y utilizando más o menos parámentros. Veamos los más utilizados:</p>
<p><strong>1. </strong>Comando simple para restaurar un Base de Datos concreta:</p>
<pre><code>
<strong>sudo mysql BASEDATOS &lt; salidaBackup.sql</strong>
</code></pre>
<p><strong>2. </strong>Comando con más parámetros de todos</p>
<pre><code>
<strong>sudo mysql user=<em>USUARIO</em> --password=<em>CLAVE BASEDATOS </em>&lt; salitaTabla.sql</strong>
</code></pre>
<p>Espero que os haya servido de algo!!!! Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2010/01/06/backup-de-base-de-datos-con-mysqldump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar VIM para trabajar con Python</title>
		<link>http://www.bibigeek.com/2009/12/17/configurar-vim-para-trabajar-con-python/</link>
		<comments>http://www.bibigeek.com/2009/12/17/configurar-vim-para-trabajar-con-python/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 23:40:37 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=922</guid>
		<description><![CDATA[Me estoy introduciendo en el mundo Python y en el mundo Django&#8230; seguro que os habréis dado cuenta por los últimos Post que he escrito.
Realizando el tutorial de Django me estoy encontrando de que mi editor VIM, para editar o crear ficheros desde mi Terminal Mac, no cumple una de las condiciones del Lenguaje Python, [...]]]></description>
			<content:encoded><![CDATA[<p>Me estoy introduciendo en el <strong>mundo Python y en el mundo Django</strong>&#8230; seguro que os habréis dado cuenta por los últimos Post que he escrito.</p>
<p>Realizando el <a title="Link Tutorial" href="http://docs.djangoproject.com/en/dev/intro/tutorial01/" target="_blank">tutorial de Django</a> me estoy encontrando de que mi editor VIM, para editar o crear ficheros desde mi Terminal Mac, no cumple una de las condiciones del <strong>Lenguaje Python</strong>, la <em>Indentación</em> o también denominado <em>Sangrado</em>.<br />
Por defecto el sangrado que tiene que tener un fichero en <strong>Python son de 4 espacios</strong> y hay que especificar explicitamente que nuestra tecla Tabulador sean 4 espacios&#8230; de esta forma seguro que nos ahorraremos muchos dolores de cabeza, ¿o no Andrés?</p>
<p>Tenemos que <strong>editar el fichero VIMRC</strong> que en el <strong>Mac OS X </strong>lo encontraremos en el <strong>directorio</strong> siguiente:</p>
<pre><code>
Directorio: <strong>/usr/share/vim/vimrc</strong>
</code></pre>
<p><strong>Alerta</strong>, para editar el fichero tendremos que tener <strong>permisos de root o de usuario avanzado</strong> <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> , con el siguiente comando os tendría que ir correctamente:</p>
<pre><code>
<strong>sudo vim vimrc</strong>
</code></pre>
<p>Teneís que añadir el siguiente código dentro del fichero después del <strong>&#8220;syntax on&#8221;</strong> :</p>
<pre><code>
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set background=dark
set autoindent

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
</code></pre>
<p><strong>Os adjunto todo el contenido de mi fichero vimrc</strong>, por si queda alguna duda:</p>
<pre><code>
" Configuration file for vim
set modelines=0     " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible    " Use Vim defaults instead of 100% vi compatibility
set backspace=2     " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

syntax on

set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set background=dark
set autoindent

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
</code></pre>
<p>Espero que os haya servido de mucho <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Ah por cierto, <strong>este mismo código os servirá para las distribuciones Linux &#8211; Unix (ubuntu, debian&#8230;)</strong> sólo que ha que <strong>tener en cuenta que el fichero vimrc</strong> lo podremos encontrar en otro directorio, por ejemplo, en <strong>Ubuntu o Debian</strong> lo encontraremos en el directorio:</p>
<pre><code>
<strong>sudo vim /etc/vim/vimrc</strong>
</code></pre>
<p>Si tenéis dudas ya sabéis que podéis contactar conmigo cuando queráis. Saludossssss</p>
<p><a title="Link a Gabriel Patiño" href="http://gepatino.blogspot.com/2008/01/configurando-vim-para-python.html" target="_blank">Link al artículo original</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2009/12/17/configurar-vim-para-trabajar-con-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans 6.8 ya esta disponible&#8230;</title>
		<link>http://www.bibigeek.com/2009/12/16/netbeans-6-8-ya-esta-disponible/</link>
		<comments>http://www.bibigeek.com/2009/12/16/netbeans-6-8-ya-esta-disponible/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 07:44:30 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Netbeans]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=914</guid>
		<description><![CDATA[Dios mio&#8230; ya tenemos disponible para descargar el nuevo Netbeans 6.8. Vaya rapidez!

En fin que yo estoy probando el Netbeans 6.8 (NO BETA) para descargar. Desde mi punto de vista sigue siendo el mejor entorno de trabajo&#8230; &#8220;peroooo que conste en acta&#8221; es bastante pesado, aunque si no tenéis que utilizar muchos frameworks (por ejemplo [...]]]></description>
			<content:encoded><![CDATA[<p>Dios mio&#8230; ya tenemos disponible para descargar el nuevo Netbeans 6.8. Vaya rapidez!</p>
<p><img class="aligncenter size-full wp-image-915" title="Netbeans 6.8" src="http://www.bibigeek.com/wp-content/uploads/2009/12/netbeans6.8.jpg" alt="Netbeans 6.8" width="475" height="304" /></p>
<p>En fin que yo estoy probando el <strong>Netbeans 6.8</strong> <strong>(NO BETA)</strong> para descargar. Desde mi punto de vista sigue siendo el mejor entorno de trabajo&#8230; &#8220;<em>peroooo que conste en acta</em>&#8221; es bastante pesado, aunque si no tenéis que utilizar muchos frameworks (por ejemplo en Java FX) o si no necesitáis soporte para el Java ME y a la hora de instalarlo lo deseleccionáis, notaréis una mejoría en la velocidad.</p>
<p>Yo desde un VirtualBox que tengo en el trabajo instalada una distribución <strong>Ubuntu Karmic Koala</strong>, asignándole 512 MB de Ram, procesador Pentium 4 a 2.8 GHz, eliminando las aplicaciones expuestas anteriormente, y con un montón de aplicaciones rulando en mi windows&#8230; <strong>VA BIEN!!!!</strong> Os adjunto las imágenes para que sepáis que tenéis que eliminar:</p>
<p><a  class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/12/EliminarOpciones.jpg"><img class="aligncenter size-medium wp-image-916" title="Eliminar Opciones" src="http://www.bibigeek.com/wp-content/uploads/2009/12/EliminarOpciones-300x225.jpg" alt="Eliminar Opciones" width="300" height="225" /></a></p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/12/InstalacionMejorada.jpg"><img class="aligncenter size-medium wp-image-917" title="Instalacion Mejorada" src="http://www.bibigeek.com/wp-content/uploads/2009/12/InstalacionMejorada-300x225.jpg" alt="Instalacion Mejorada" width="300" height="225" /></a></p>
<p>Para descargar el nuevo <a href="http://netbeans.org/downloads/index.html">Netbeans versión 6.8 pulsar el link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2009/12/16/netbeans-6-8-ya-esta-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Al fin&#8230; Google Chrome para Mac</title>
		<link>http://www.bibigeek.com/2009/12/08/al-fin-google-chrome-para-mac/</link>
		<comments>http://www.bibigeek.com/2009/12/08/al-fin-google-chrome-para-mac/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 18:41:24 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=906</guid>
		<description><![CDATA[Mi historia sobre el inicio de Google Chrome para Mac:
Estamos en Martes día 8 de Diciembre del 2009, en España fiesta Nacional&#8230; y mi Google Notifier para Mac me avisa de un nuevo correo en mi bandeja de entrada, en ese momento pienso: &#8220;Genial!!! Mi amigo Xavi me ha contestado el mail del trabajillo que [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Mi historia sobre el inicio de Google Chrome para Mac:</strong></p>
<p>Estamos en Martes día 8 de Diciembre del 2009, en España fiesta Nacional&#8230; y mi Google Notifier para Mac me avisa de un nuevo correo en mi bandeja de entrada, en ese momento pienso: <em>&#8220;Genial!!! Mi amigo Xavi me ha contestado el mail del trabajillo que estamos haciendo&#8230;&#8221;</em>.</p>
<p>Me decido a abrir mi Gmail y&#8230; <strong>¡OSTRAS! ¿Un correo de Google Chrome? </strong>Abro el correo y veo el siguiente titular:</p>
<h3>Por fin ha llegado Google Chrome para Mac. La versión beta ya está disponible.</h3>
<p>¡¡¡¡Alucinante!!!! Lo que hemos tenido que esperar para que realmente Google Chrome lanzara la versión de Google Chrome para Mac oficialmente, la beta por supuesto (<strong>beta =  peta</strong>, al tanto).<br />
Este es la imagen del correo que he recibido:</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/12/CorreoGoogleChrome.jpg"><img class="aligncenter size-medium wp-image-907" title="CorreoGoogleChrome" src="http://www.bibigeek.com/wp-content/uploads/2009/12/CorreoGoogleChrome-300x222.jpg" alt="CorreoGoogleChrome" width="300" height="222" /></a></p>
<p>Espero comentarios sobre la nueva experiencia&#8230; yo lo instalaré dentro de unos minutos y ya os contaré.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2009/12/08/al-fin-google-chrome-para-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar Django en MacOS X SnowLeopard</title>
		<link>http://www.bibigeek.com/2009/12/01/instalar-django-en-macos-x-snowle/</link>
		<comments>http://www.bibigeek.com/2009/12/01/instalar-django-en-macos-x-snowle/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 07:33:13 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=851</guid>
		<description><![CDATA[Otra experiencia informática,
Ahora sí&#8230; os voy a explicar como instalar desde cero el Django. Pero antes tendremos que comprobar una serie de puntos importantes, como la de saber si tenemos instalado el Python, o si ya tenemos alguna versión del Django instalada y lo desconocíamos&#8230;
Pasos previos a Instalar Django en un Mac
1. Comprobar si tenemos instalado [...]]]></description>
			<content:encoded><![CDATA[<p>Otra experiencia informática,</p>
<p>Ahora sí&#8230; os voy a explicar como <strong>instalar desde cero el Django</strong>. Pero antes tendremos que comprobar una serie de puntos importantes, como la de saber si tenemos instalado el Python, o si ya tenemos alguna versión del Django instalada y lo desconocíamos&#8230;</p>
<h3>Pasos previos a Instalar Django en un Mac</h3>
<p><strong>1. Comprobar si tenemos instalado el Intérprete de Python y que versión tenemos instalada</strong>. Para comprobar sólo sera necesario ejecutar el comando <strong><em>&#8220;python&#8221;</em></strong> desde la terminal. Por defecto Mac ya lo tiene instalado, pero no cuesta nada coprobarlo ¿no? Pongo una ilustración (<em>una imagen vale más que mil palabras</em>):</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/11/InterpretePython.jpg"><img class="aligncenter size-medium wp-image-881" title="Interprete Python" src="http://www.bibigeek.com/wp-content/uploads/2009/11/InterpretePython-300x114.jpg" alt="Interprete Python" width="300" height="114" /></a></p>
<p>En esta imagen podréis ver que tengo instalado el python y al ejecutar el <strong><em>comando python</em></strong> ya tenemos rulando el intérprete en el Mac. Fijáos en las líneas superiores.., el <strong>&#8220;python&#8221; que está ejecuntándose es la versión 2.6</strong>, versión <strong>apta</strong> para el <strong>Django</strong>. Actualmente si tenéis una versión del <em>python superior a la 2.6 el Django no funcionará</em>, por lo tanto es algo a tener muy en cuenta.</p>
<p><strong>Para salir del intérprete de python</strong> sólo basta con ejecutar la función: <strong>exit()</strong>.</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/11/SalirInterpretePython.jpg"><img class="aligncenter size-medium wp-image-882" title="Salir Interprete Python" src="http://www.bibigeek.com/wp-content/uploads/2009/11/SalirInterpretePython-300x106.jpg" alt="Salir Interprete Python" width="300" height="106" /></a></p>
<p><strong>2. Comprobar que no tenemos nínguna versión de Django instalada.</strong> En este punto voy a centrarme en la de instalar el <strong><em>Django estable</em></strong>, ya que desde la <a title="Django Projects Install" href="http://docs.djangoproject.com/en/dev/intro/install/" target="_blank">página oficial de DjangoProjects</a> podemos instalarlo de 3 formas diferentes. La versión estable de Django se instala en el directorio <strong>site-packages</strong> de nuestra versión de Python. Supongo que cada distribución linux, y en este caso el Mac, podemos encontrar este directorio en lugares diferentes. Para <strong>conocer donde tenemos el site-packages</strong> tenemos que ejecutar el siguiente comando:</p>
<pre><code>
<strong>python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"</strong>
</code></pre>
<p>Os puedo decir que en <strong>Mac OC X</strong><em> el Python lo podemos encontrar en</em> <strong>/Library/Python/2.6/</strong> (he puesto 2.6 porque es el que se está ejecutando). Pongo otra imagen para que veáis un ejemplo:</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/11/SitePackagesPython.jpg"><img class="aligncenter size-medium wp-image-886" title="Site Packages Python" src="http://www.bibigeek.com/wp-content/uploads/2009/11/SitePackagesPython-300x67.jpg" alt="Site Packages Python" width="300" height="67" /></a></p>
<p>Por lo tanto, tenemos que <strong>acceder al directorio especificado</strong> en la ejecución del comando y ejecutamos el comando: <strong><em>ls -l</em></strong>.</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/11/SitePackagesDjango.jpg"><img class="aligncenter size-medium wp-image-887" title="Site Packages Django" src="http://www.bibigeek.com/wp-content/uploads/2009/11/SitePackagesDjango-300x112.jpg" alt="Site Packages Django" width="300" height="112" /></a></p>
<p>Si tenemos alguna <strong>carpeta llamada django</strong>, significa que tenemos alguna versión instalada. Por lo tanto, podemos  <strong>proceder a su eliminación</strong> y será tan fácil como <strong>eliminar la carpeta</strong> <strong>django</strong>.</p>
<h3>Pasos para Instalar Django en Mac OS X</h3>
<p><strong>Paso 1. <a title="Descarga Django 1.1" href="http://www.djangoproject.com/download/" target="_blank">Descargar la versión estable</a></strong></p>
<p><strong>Paso 2.</strong> <strong>Descomprimimos el fichero.</strong> Podemos descomprimirlo desde Terminal o del entorno gráfico, es totalmente indiferente.</p>
<p><strong>Paso 3. Tenemos que acceder a la carpeta que hemos descomprimido</strong>. Adjunto ilustración:</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/11/DirectorioDjango1_11.jpg"><img class="aligncenter size-medium wp-image-890" title="Directorio Django 1_11" src="http://www.bibigeek.com/wp-content/uploads/2009/11/DirectorioDjango1_11-300x164.jpg" alt="Directorio Django 1_11" width="300" height="164" /></a></p>
<p><strong>Paso 4. Ejecutamos el siguiente comando</strong> dentro del directorio que hemos descomprimido:</p>
<pre><code>
<strong>sudo python setup.py install</strong>
</code></pre>
<p>La <strong>ejecución de este comando</strong> su función ha sido la de <strong>instalar el django dentro de la carpeta site-packages</strong> de nuestro python.</p>
<p><strong>Paso 5. Comprobar que se ha instalado correctamente.</strong></p>
<p>Para verificar si se ha instalado correctamente tenemos que <strong>comprobar</strong> que dentro del <strong>site-packages</strong> se ha creado una nueva carpeta con el nombre <strong><em>django</em></strong> en el cual podemos encontrar ficheros y directorios, por ejemplo:</p>
<p><a class="lightbox" rel="lightbox[roadtrip]" href="http://www.bibigeek.com/wp-content/uploads/2009/12/djangoSitePackages.jpg"><img class="aligncenter size-medium wp-image-898" title="django Site Packages" src="http://www.bibigeek.com/wp-content/uploads/2009/12/djangoSitePackages-300x173.jpg" alt="django Site Packages" width="300" height="173" /></a></p>
<p>Hasta aquí la instalación del Django en un Mac OS X. A disfrutarlo!!!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2009/12/01/instalar-django-en-macos-x-snowle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac añadir colores en Terminal y Vim</title>
		<link>http://www.bibigeek.com/2009/11/30/mac-anadir-colores-en-terminal-y-vi/</link>
		<comments>http://www.bibigeek.com/2009/11/30/mac-anadir-colores-en-terminal-y-vi/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:55:38 +0000</pubDate>
		<dc:creator>bibigeek</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Unix Linux]]></category>

		<guid isPermaLink="false">http://www.bibigeek.com/?p=858</guid>
		<description><![CDATA[Hola a tod@s,
Estos días estoy metiéndome mucho con la configuración de mi Mac desde Terminal, ya que estoy intalando el Django y preparándome para el WorkShow.
Normalmente utilizo la Terminal para conectarme con ssh a mi Servidor ya para hacer algunas que otras cosillas como: asignar permisos (que desde mi punto de vista es mucho más [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a tod@s,<br />
Estos días estoy metiéndome mucho con la <strong>configuración de mi Mac desde Terminal</strong>, ya que estoy intalando el <strong>Django</strong> y preparándome para el <strong>WorkShow</strong>.</p>
<p>Normalmente utilizo la Terminal para conectarme con ssh a mi Servidor ya para hacer algunas que otras cosillas como: asignar permisos (que desde mi punto de vista es mucho más rápido que la interfaz), modificar ficheros ocultos o busquedas de ficheros ocultos&#8230; Pero nunca me había detenido en que la Terminal tuviera una visualización más idónea, más práctica para diferencias ficheros y carpetas&#8230;, configuración que algunos Linux traen por defecto. En fin que tuve que buscar como hacerlo, y lo conseguí, otra cosa que he aprendido!!!!!</p>
<h3>Explicación y ejemplos BASHRC</h3>
<p>Para añadir los colores en la Terminal sólo será necesario modificar el fichero <strong>bashrc</strong>. En las distintas distribuciones linux se puede encontrar este fichero en diferentes directorios, si es que se han creado. Os pondré unos ejemplo:</p>
<h4><strong>Ejemplo 1</strong>. Que ya esté creado (Distribución Debian Lenny)</h4>
<p>Os pondre el ejemplo más fácil, el de mi servidor Debian Lenny. Cuando entré por primera vez en el servidor mediante SSH, me di cuenta que no tenía activado los colores a la hora de distinguir ficheros, directorios, ejecutables, etc. A raíz de esto, me puse a buscar como activarlo y tuve que buscar el fichero bashrc.</p>
<p>Aquí es donde podemos ver una <strong>diferencia sustancial entre <strong>Mac OS X con Debian</strong></strong>, el fichero <strong>bashrc</strong> en Debian lo encontramos como un fichero oculto en el <strong><em>directorio raíz del usuario</em></strong> (por ejemplo:<em> /home/bibigeek/.bashrc</em>) en concreto, es decir, cada usuario tiene que tener su <strong>fichero .bashrc</strong>. Veamos una ilustración:</p>
<p><img class="aligncenter size-full wp-image-865" title="Debian Bashrc" src="http://www.bibigeek.com/wp-content/uploads/2009/11/DebianBashrc.jpg" alt="Debian Bashrc" width="476" height="107" /><br />
Si ya está creado, lo único que tendremos que hacer es modificar el fichero y tenemos que descomentar unas líneas: desde el <strong><em>export</em></strong> hasta el trecer <strong><em>alias</em></strong>. Por lo tanto, el fichero debería quedar así:</p>
<pre><code>
# ~/.bashrc: executed by bash(1) for non-login shells.

export PS1='\h:\w\$ '
umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=always'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
</code></pre>
<h4><strong>Ejemplo 2</strong>. Que el fichero no este creado</h4>
<p>Simplemente tenemos que <strong>crear el fichero .bashrc en el directorio raíz del usuario </strong>y listo. Reiniciamos el bash y teóricamente tenemos que poder entrar con los colores activos. <strong>IMPORTANTE</strong>: el contenido del fichero tiene que ser el mismo que el del Ejemplo 1.</p>
<h3>Mac añadir colores en el Terminal.app</h3>
<p>Primero tenemos que conocer donde tenemos que buscar el <strong>fichero bashrc en Snow Leopard</strong>. Lo encontraremos en:</p>
<pre><code>
<strong>/etc/bashrc</strong> // Lo tenemos que editar con <strong>vim</strong>
</code></pre>
<p>En este fichero no hay que descomentar nada, todo lo contrario, sino que hay que añadir nuevas líneas de código, veámoslas:</p>
<pre><code>
export TERM=xterm-color
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad
</code></pre>
<p>Poniendo estas líneas de código, tendremos configurado nuestro terminal con los colores.</p>
<h3>Poner colores al editor VIM en Mac</h3>
<p>Ahora viene el otro punto fuerte de este POST, otra vez los colores <img src='http://www.bibigeek.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h4>¿Como podemos darle colores al editor VIM cuando abrimos un fichero?</h4>
<p>Para llevar a cabo esto, nuevamente hay que modificar un fichero de condiguración, en este caso es el <strong>fichero vimrc</strong>.</p>
<p>En <strong>Debian</strong> (y creo que en las distintas distribuciones también) podemos encontrar cuyo fichero en la ruta:</p>
<pre><code>
/etc/vim/vimrc
</code></pre>
<p>En cambio para el sistema <strong>Mac OS X</strong> lo podemos encontrar:</p>
<pre><code>
/usr/share/vim/vimrc
</code></pre>
<p>En ambos ficheros tenemos que añadir una línea, o como me pasó en el caso del Sistema Debian, descomentarla, para que pueda funcionar correctamente los colores en el editor Vim, y es:</p>
<pre><code>
syntax on
</code></pre>
<p>Con esto doy como finalizada esta nueva entrada en bibigeek, espero que os sea tan útil como lo ha sido para mi.<br />
Un fuerte abrazo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bibigeek.com/2009/11/30/mac-anadir-colores-en-terminal-y-vi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
