Uno de los grandes cambios al pasar de Linux a Mac, es sin duda, el teclado. Y con ello vienen todas las combinaciones de teclas (shortcuts) a las que estaba acostumbrado.

Intenté varias cosas como

  • Aprender los shortcuts de cada sistema operativo
  • Utilizar el keymap de OSX en ambas plataformas. Para ello busqué la forma de mapear la tecla CMD (command/meta) a la tecla Super (Windows) en Ubuntu, pero no tuve éxito.
  • Mapear distintas configuraciones de teclas para que la distribución se pareciera a la del teclado de la Mac
  • Incluso pensé en comprar un teclado Mac y utilizarlo en Ubuntu, pero al parecer tampoco es del todo transparente.

Si utilizas IntelliJ Idea lo mejor que puedes hacer es utilizar el mismo “Keymap” en las 2 plataformas. Decidí utilizar el de “Eclipse” debido a que previamente usaba Eclipse como IDE primario y ya conocía bastantes combinaciones. Además es la que más se parece en ambos sistemas operativos.

Fuentes:
http://superuser.com/questions/246345/how-can-i-make-my-super-keys-windows-key-behave-more-like-ctrl-alt-shift-in-li
https://radu.cotescu.com/remapping-keys-in-ubuntu-14.04/
https://help.ubuntu.com/community/AppleKeyboard
http://stackoverflow.com/questions/21845209/remap-ctrl-alt-super-keys-in-ubuntu-13-10
https://www.jetbrains.com/idea/help/keyboard-shortcuts-you-cannot-miss.html

Para comenzar un proyecto, de las primeras cosas que necesitamos es una base de datos. En ubuntu podemos utilizar postgresql.

Para instalar postgres basta con ejecutar el siguiente comando

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

Una vez instalado podemos conectarnos como el usuario postgres (super admin)

sudo -i -u postgres
psql

Una vez en el prompt de postgresql podemos ejecutar los siguientes comandos

\conninfo    # nos muestra información de nuestra conexión
\conn database_name    # cambiar la base de datos activa
\d    # lista los objetos de la base de datos
\dt    # lista las tablas de la base de datos
\q    # salir del prompt de postgresql

Ya fuera del prompt de postgresql podemos crear un usuario y su base de datos de la siguiente manera

createuser -D -A -P username
createdb -O username dbname

El primer comando crea un usuario sin privilegio de crear bases de datos (-D), ni agregar usuarios (-A) y nos preguntará la contraseña para el usuario (-P). El segundo comando crea la base de datos y asigna como propietario al usuario que especifiquemos.

Para conectarnos como un usuario diferente necesitamos hacerlo de la siguiente manera

psql -U username -h 127.0.0.1 database

Fuentes:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-14-04
http://stackoverflow.com/questions/8420761/postgres-authentication-fails-when-try-to-login-with-different-unix-user
https://help.ubuntu.com/community/PostgreSQL#Managing_users_and_rights

Recientemente tuve que desempolvar un proyecto de .NET (C#) y hacer unas modificaciones.
Había que utilizar las clases de System.Data.Oracle en vez de Oracle.DataAccess debido a que, la segunda, ocasionaba un timeout de conexión con la versión 11.2 de Oracle Database Server.

Una vez que sustituí las clases y corregí todos los errores de compilación ocasionados por el cambio, ejecute la aplicación para probar su funcionalidad. Para mi sorpresa me lanzó la siguiente excepción:

ORA-06550: línea 1, columna 7: PLS-00306: número o tipos de argumentos erróenos al llamar a ‘PR_GETEXPEDIENTESXFACUERDO’
ORA-06550: línea 1, columna 7: PL/SQL: Statement ignored

Verifiqué muchas veces que el número o tipo de los parámetros fuera el correcto, pero seguía sin funcionar. En un acto de desesperación sustituí la llamada al procedimiento por una consulta sql estándar, pero no tuve éxito. Ya sin más ideas noté que el nombre de los parámetros en el código era distinto a los nombres en el procedimiento almacenado. Intenté renombrarlos, ya sin nada que perder, y asombrosamente funcionó. Al parecer la clase OracleCommand de System.Data.Oracle toma en cuenta el nombre de los parámetros mientras que la de Oracle.DataAccess no.

Fuentes:
https://community.oracle.com/thread/2171363?start=0&tstart=0
http://support.microsoft.com/kb/322160
http://blogs.msdn.com/b/spike/archive/2009/06/16/oracle-stored-procedures-with-ref-cursor-from-net-code-and-bid-tracing.aspx

RoR – Run a ruby gem

enero 16, 2014

Si instalaste ruby a través de rbenv y después instalas un paquete(gem) que proporciona comandos, es necesario ejecutar el siguiente comando para que esten disponibles

rbenv rehash

de lo contrario te mostrará un error parecido al siguiente

$gem install foundation
Successfully installed foundation-1.0.4
1 gem installed
Installing ri documentation for foundation-1.0.4...
Installing RDoc documentation for foundation-1.0.4...

$foundation
bash: foundation: command not found

Fuentes:
https://github.com/sstephenson/rbenv/blob/605e691bff4863e5014ba5ad750ad65e3278aea3/README.md#rbenv-rehash

Al desarrollar una aplicación web necesitamos ir viendo como funciona desde nuestro navegador. La forma más sencilla que he encontrado hasta ahora es abrir una terminal, ir a la carpeta del proyecto y ejecutar el siguiente comando

python -m SimpleHTTPServer

Si necesitas algo más avanzado que eso, por ejemplo, Apache con PHP. También puedes ejecutarlo desde la línea de comandos. Lo primero que tienes que hacer es instalarlo.

sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo service apache2 restart

Una vez instalado, crea el archivo ~/bin/pache con el siguiente contenido

    #!/bin/bash
    /usr/sbin/apache2 -DFOREGROUND -d . -f .htaccess -C"PidFile `mktemp`" -C"Listen 8000" -C"Include /etc/apache2/mods-enabled/*.load" -C"Include /etc/apache2/mods-enabled/*.conf" -C"ErrorLog /dev/stdout" -C"DocumentRoot ." -e debug

Hazlo ejecutable

chmod a+x ~/bin/pache

Ve a la carpeta de tu proyecto y ejecuta el comando

cd ~/Projects/demo
pache

En mi caso utilicé initializr para no comenzar el proyecto desde cero. Si te aparece el siguiente mensaje de error o alguno otro parecido

Syntax error on line 86 of ./.htaccess: Invalid command ‘CommandName’, perhaps misspelled or defined by a module not included in the server configuration

tienes que activar algún módulo. En el script que creamos intentamos cargar todos los módulos que estén configurados en tu instalación local (/etc/apache2/mods-enabled). También podrías especificarlos en el archivo .htaccess y la directiva LoadModule Fuentes: http://www.howtogeek.com/howto/ubuntu/installing-php5-and-apache-on-ubuntu/ http://stackoverflow.com/questions/13695391/start-an-apache-server-in-any-directory-from-command-line http://systembash.com/content/apache-2-4-upgrade-and-the-invalid-command-order-error/ http://www.senin.org/2006/11/07/invalid-command-order-perhaps-misspelled-or-defined-by-a-module-not-included-in-the-server-configuration/ http://stackoverflow.com/questions/933959/apache-is-incorrectly-converting-jsp-pages-to-text-plain

En OpenSUSE, para suspender o hibernar tu computadora, tienes que dar clic en “Shutdown” y luego seleccionar la acción que deseas. Yo buscaba algo más rapido 😉
Para crear un script para suspender tu computadora, crea el archivo suspend.sh, p. ej.
gnomesu gedit /usr/share/local/suspend.sh
y coloca el siguiente texto en él

#!/bin/bash
#Script to suspend computer

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
 /org/freedesktop/Hal/devices/computer \
 org.freedesktop.Hal.Device.SystemPowerManagement.Suspend \
 int32:0

Para crear un script para hibernar tu computadora, crea el archivo hibernate.sh, p. ej.
gnomesu gedit /usr/share/local/hibernate.sh
y coloca el siguiente texto en él

#!/bin/bash
#Script to hibernate computer

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate

Finalmente puedes crear accesos directos, que podrás agregar a tus favoritos, generando los archivos
/usr/share/applications/suspend.desktop

[Desktop Entry]
X-SuSE-translate=true
Name=Suspend
GenericName=Suspend
Comment=Suspend computer
Exec=suspend.sh
Icon=suspend.svg
Terminal=false
Type=Application
Categories=Utility;
Version=1.0

y /usr/share/applications/hibernate.desktop

[Desktop Entry]
X-SuSE-translate=true
Name=Hibernate
GenericName=Hibernate
Comment=Hibernate computer
Exec=hibernate.sh
Icon=hibernate.svg
Terminal=false
Type=Application
Categories=Utility;
Version=1.0

las imágenes las puedes descargar de aquí y las tienes que colocar en /usr/share/icons/hicolor/scalable con el nombre correspondiente.

Fuentes:
https://bbs.archlinux.org/viewtopic.php?pid=551909
https://cirovladimir.wordpress.com/2011/05/04/opensuse-11-4-run-gedit-as-administrator/
http://www.manucornet.net/GNOME/logout_dialog/

Casi siempre ejecuto las mismas aplicaciones después de iniciar mi computadora. Pues para no estar dando clic en cada ícono, lo que hice fue crear un script y añadir un “lanzador de aplicaciones” -que lo ejecute, en mi barra de programas-. El problema fue, cómo hacer para que al iniciar VirtualBox arrancará la máquina virtual. Pues la solución la encontré en el manual. Simplemente crea un archivo de texto con la extensión “.sh” y agrega lo siguiente:

#!/bin/sh
firefox &
gnome-terminal &
pidgin &
VBoxManage startvm EL_NOMBRE_DE_TU_MAQUINA_VIRTUAL &

Luego crea el lanzador de aplicaciones y pon el siguiente comando -recuerda poner el nombre de tu script-

sh /home/cirovladimir/myApps.sh

Listo! Cuando des clic en el lanzador te abrirá Firefox, una terminal de comandos, el cliente de mensajería Pidgin y -por supuesto- iniciará tu máquina virtual.