viernes, 20 de abril de 2012

Instalar MySql Workbench en Ubuntu 11.10

Para instalar en ubuntu desktop 11.10 MySql Workbench, que es una muy buena herramienta visual de diseño de bases de datos que integra desarrollo de software, Administración de bases de datos, diseño de bases de datos, creacion y mantenimiento para el sistema de base de datos MySQL. Ejecutar los siguiente desde el terminal:

(Solución provisional hasta que lo cambie Oracle.)
sudo add-apt-repository ppa:olivier-berten/misc
sudo apt-get update
sudo apt-get install mysql-workbench-gpl

Flags en el editor de tabla de MySql Workbench

  • PK - Primary Key
  • NN - Not Null
  • BIN - Binary
  • UN - Unsigned
  • UQ - Unique Key
  • ZF - Zero-Filled
  • AI - Auto Incremenent

La longitud máxima de enlaces (URIs, URLs) en la práctica es - 2,083

Antes de nada, es:
2083
Tenía una duda, qué longitud de campo necesito en mi tabla de una base de datos mysql para poder almacenar cualquier URL(enlace).

Aunque en la especificación del protocolo HTTP no se especifica ninguna longitud máxima, los distintos navegadores y software de servidores imponen unos límites prácticos. El menor de los cuales, el del navegador Explorer, es 2083, sin que haya más de 2,048 caracteres formando el path. Curiosamente el límite manejado por el servidor Microsoft Internet Information Server es 16,384.

En éste caso, lo de Explorer no me parece una cagada, una longitud excesiva de enlaces normalmente es resultado de un mal diseño. La regla general es que en el enlace deberían ir los parámetros que son imprescindibles para regenerar el contenido de la página. La solución estándar para realizar una petición equivalente al envío de un formulario con muchos campos es usar el método POST en vez de GET y meter los parámetros en el cuerpo del mensaje.

Así que si estamos pensando en crear un campo en nuestra base de datos de MySql para guardar URLs, definiríamos uno como
VARCHAR(2083)
En realidad para el caso de mysql hay dos casos:
  1. si < MySQL 5.0.3 usar tipo de campo TEXT, porque VARCHAR estaba limitado a 255.
  2. si >= MySQL 5.0.3 usar tipo de campo VARCHAR(2083)
Sacado de aquí y aquí.

jueves, 19 de abril de 2012

VMWare Ubuntu server - apagar máquina virtual

Para apagar (salir de) la máquina virtual con ubuntu server, ejecutamos en el terminal:
sudo shutdown -h now

Ubuntu 10.04 server - cambiar distribución del teclado a Español

Decidí crearme una máquina virtual con Ubuntu Server 10.04 LTS de 64bits.
Para crear y ejecutar la máquina virtual uso VMWare Player 4.0.2 (gratuito).
Tras crearla y ejecutarla, me encontré que la distribución por defecto del teclado
es para un teclado americano. Mi objetivo no es cambiar todo tipo de locales a español, sino sólo cambiar la distribución del teclado, para poder teclear sin problemas en mi teclado español, dejando todo el sistema (de momento) en inglés.

Con esa distribución y mi teclado español, es un rollo buscar y recordar las teclas que sirven para cada símbolo y ni hablar del historial de comandos en consola, que debería ser flecha arriba (encontré que con esa distribución sí que podrían obtenerse los comandos anteriores con control+p, pero no es cómodo).

Éste es el teclado que tengo en mi portátil. Según las especificaciones, es un teclado de 85 teclas, "85 key Numeric Keyboard".

La solución ha sido instalar el siguiente paquete:
sudo apt-get install console-data

Y ejecutar (si no se ha ejecutado ya automáticamente):
sudo dpkg-reconfigure console-setup

Al parecer para el ubuntu server 11, en vez de "console-setup" se debe usar "keyboard-configuration":
sudo dpkg-reconfigure keyboard-configuration

En el menú que aparece, ir confirmando todo, menos en aquella pantalla que seleccione como país "Spain", pulsando repetidas veces la tecla "s", para que la selección llegara a marcar dicha opción. El problema en ese menú, es que no encontré una manera de subir/bajar por el menú de opciones teniendo la distribución del teclado mal, porque las flechas de arriba y abajo no funcionan.

La configuración se guarda en el fichero /etc/default/console-setup.
Seguramente se puede configurar la distribución de teclado editando directamente ese fichero, pero no lo he probado.

Sacado de aquí.

sábado, 14 de abril de 2012

Boston dynamics - Robots caminando y subiendo escaleras

Impresionantes imágenes de sistemas robóticos antropomorfos que suben escaleras o que van caminando. Creación de Mientras camina sobre una cinta móvil, un hombre empuja incluso al robot mientras éste camina, y éste no se cae, recupera el equilibrio y sigue caminando. Impresionante. La verdad es que da un poco de miedito. Parece que dentro de no mucho, tendremos "bichillos" de éstos caminando entre nosotros. Mientras no nos pisen, ni nos disparen, ¿bien no?



Igualmente es impresionante y muy triste pensar, que si éstos robots reemplazan a soldados humanos, las sociedades del primer mundo cuyos gobiernos promueven éste tipo proyectos no tendrán "tanto reparo" contra las guerras de expolio donde se utilicen éstas tropas, porque ahora no sufrirán bajas de personas reales, como mucho les podrá molestar que les suban los impuestos o los precios, para sufragar la pérdidas materiales.

martes, 10 de abril de 2012

Hamster free book converter - Cambiar formato del libro electrónico

Desde que me compré el Kindle 3 (con el que estoy muy contento), hará más de un año, he estado usando Calibre. Ahora me entero, a través de PCActual, de otra aplicación que puede estar bien para convertir rápido y fácilmente entre los distintos formatos. Es el Hamster free book converter. Es gratuito, soporta la mayoría de los formatos existentes, y también un gran número de dispositivos.

martes, 3 de abril de 2012

RVM - error "RVM is not a function, selecting rubies with 'rvm use ...' will not work."

Supongamos que hemos instalado RVM, e incluso hemos instalado alguna versión de Ruby usando el propio RVM. Ahora cuando intentamos establecer la versión de Ruby a usar, con:
rvm use una_version_de_Ruby
Nos escupe un error del tipo:
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
Para arreglarlo, tenemos que añadir al fichero ~/.bashrc lo siguiente:
if test -f ~/.rvm/scripts/rvm; then
[ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
fi
De ésta forma, cada vez que inicialicemos una shell en modo interactivo, si rvm todavía no es una función, se evaluará el script ~/.rvm/scripts/rvm para que esté disponible rvm como función y podrá ir haciendo los cambios oportunos a la configuración de entorno de la shell.

Instalar Ruby con RVM

RVM permite instalar y gestionar distintas versiones de Ruby, instaladas simultáneamente en el equipo.

Es recomendable, antes de instalar versiones de Ruby con RVM y prevenir que el proceso no se complete por falta de alguna dependencia, ejecutar:
rvm requirements

Que mostrará los paquetes que tenemos que tener instalados, que se requerirán durante la instalación.

Requirements for Linux ( DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10" )

NOTE: 'ruby' represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X)
This is the *original* / standard Ruby Language Interpreter
'ree' represents Ruby Enterprise Edition
'rbx' represents Rubinius

bash >= 4.1 required
curl is required
git is required (>= 1.7 for ruby-head)
patch is required (for 1.8 rubies and some ruby-head's).

To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head),
then you must install and use rvm 1.8.7 first.

Additional Dependencies:
# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:
ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

# For JRuby, install the following:
jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headless
jruby-head: /usr/bin/apt-get install ant openjdk-6-jdk

# For IronRuby, install the following:
ironruby: /usr/bin/apt-get install curl mono-2.0-devel

Pero por experiencia personal, no hace falta instalar del tirón todos los paquetes que se mencionan. Yo probé a instalar directamente una versión de Ruby, y cuando el proceso fallaba, instalaba sólo los paquetes de los que se quejaba que faltaban (en mi caso bison y autoreconf). Como vamos a estar instalando la misma versión, sólo al principio se descargan los fuentes, y se consume tiempo, pero si volvemos a ejecutar la instalación de esa misma versión, ya no se vuelve a descargar los fuentes, porque ya los tiene, así que no se tarda mucho y nos instalamos sólo lo imprescindible.

Una vez se tiene instalado RVM, podemos ver las versiones de Ruby y derivados disponibles que podemos instalar con rvm. Para ello ejecutamos:
rvm list known

Cuando ejecute esto, las versiones de Ruby que tenía disponibles eran:
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p358]
[ruby-]1.8.7-head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2-p180
[ruby-]1.9.2-p290
[ruby-]1.9.2[-p318]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3-p0
[ruby-]1.9.3[-p125]
[ruby-]1.9.3-head
ruby-head

Para instalar una versión concreta pondremos:
rvm install identificador_versión

Por ejemplo, para instalar la versión [ruby-]1.9.3-head, podemos poner:
rvm install 1.9.3-head
o
rvm install ruby-1.9.3-head

Hay que tener en cuenta, que si no tenemos alguna versión de Ruby ya instalada o su ejecutable no está en la ruta, obtendremos un error durante el proceso de instalación, si intentamos instalar una versión acabada en "-head".
Yo, por ejemplo, cuando intenté instalar la versión 1.9.3-head, obtuve el siguiente error:

Installing Ruby from source to: /home/nikito/.rvm/rubies/ruby-1.9.3-head, this may take a while depending on your cpu(s)...

ruby-1.9.3-head - #fetching
HEAD is now at 65d88f9 merge revision(s) 35221:
From git://github.com/ruby/ruby
* branch ruby_1_9_3 -> FETCH_HEAD
Already up-to-date.
Copying from repo to src path...
Patch 'xcode-debugopt-fix-r34840' not found.
ruby-1.9.3-head - #autoreconf
ruby-1.9.3-head - #configuring
ruby-1.9.3-head - #compiling
Error running 'make ', please read /home/nikito/.rvm/log/ruby-1.9.3-head/make.log
There has been an error while running make. Halting the installation.

En el log del make tenía esto:

[2012-04-03 11:29:55] make
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -fPIC
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/i686-linux -I./include -I.
DLDFLAGS = -Wl,-soname,libruby.so.1.9
SOLIBS = -lpthread -lrt -ldl -lcrypt -lm
compiling main.c
compiling dmydln.c
compiling dmyencoding.c
compiling version.c
compiling dmyversion.c
generating miniprelude.c
executable host ruby is required. use --with-baseruby option.
make: *** [miniprelude.c] Error 1

Así que lo que hice, es desistir de instalar la ruby-1.9.3-head, y optar por instalarme la ruby-1.9.3-p125. Ejecutando:
rvm install 1.9.3

Que se instaló del tirón sin problemas.

Descargar GIT usando GIT

Parece una forma un poco retorcida para descargárselo, pero tiene sentido si queremos obtener una copia de los fuentes del git de una versión determinada o la última de desarrollo, que luego podemos actualizar y compilar sustituyendo a la que venimos utilizando. De esta forma podemos obtener todas las versiones de git que estén disponibles en su repositorio de fuentes y no estamos tan limitados por los repositorios de apt o demás formas de instalarse el git.

Bien es cierto, que para esto, tenemos que tener previamente instalada alguna versión del GIT, con el que vamos a descargarnos el repositorio.

Copiar el repositorio git:
git clone git://github.com/gitster/git.git

Si tiene problemas intentando conectarse (Git utiliza el puerto 9418), puede intentar acceder al repositorio usando el protocolo HTTP:
git clone http://github.com/gitster/git.git

Éste ultimo método funciona incluso si estamos tras cortafuegos o similares.

Puede también consultar los contenidos del repositorio de git tanto en gitweb o en la interfaz web GitHub.

Traducido de aquí.