Mostrando entradas con la etiqueta OpenOffice. Mostrar todas las entradas
Mostrando entradas con la etiqueta OpenOffice. Mostrar todas las entradas
Tips Slackware 13.1

Por qué elegí Slackware?

Luego de haber utilizado Ubuntu por 4 años finalmente me decidí por instalar una distribución GNU/Linux más estable y "espartana" (como diría un profe de la Universidad Nacional del Sur), aunque tuviera que resignar facilidad de uso y mantenimiento. No tengo nada en contra de Ubuntu, creo que es una distribución formidable, muy pero muy fácil de utilizar. Es más, creo firmemente que es mucho más fácil de utilizar que cualquier Windows. A cualquier persona que utiliza una computadora por primera vez le daría una distro basada en Ubuntu por su simplicidad. Pero esta facilidad de uso es lo que me "aburrió", todo es muy fácil y se pierde mucho control sobre lo que el sistema operativo hace (y se pierden muchas oportunidades para comprender y aprender como funciona el sistema operativo). Siempre me divertí más poniéndome el overol que haciendo un "apt-get install ...".
Respecto a la estabilidad, investigando durante mucho tiempo en foros y páginas de Internet descubrí que Slackware es considerada "la distribución de GNU/Linux más estable" y supuse que el mundo no debe estar equivocado por ser la distribución de GNU/Linux más antigua aún con vida.

Un poco de historia...

Mis primeras armas con GNU/Linux las hice utilizando una distro más que "espartana": DSL (abreviatura de Damn Small Linux). Por esa época utilizaba DSL versión 3.4 con un kernel Linux 2.4.26 y corría en un procesador AMD K6 II de 450 MHz (un sólo núcleo obviamente jeje) con unos increíbles 64 MB de memoria RAM. Esta distro ultra liviana, basada en Knoppix, no tenía manejador de paquetes, utilizaba el manejador de ventanas fluxbox, y tanto su "instalación" (estaba pensada para funcionar como live CD, no se recomendaba la instalación) como uso era para usuarios intrépidos. Aunque... si tienen un cacharro viejo tirado en la pieza pónganle un DSL y devuélvanlo a sus años dorados.
Abandoné DSL el día que compré mi máquina de escritorio actual y decidí pasarme a una distribución más moderna, en ese momento Ubuntu 6.04.

Instalando Slackware 13.1

Recuerdo cuando le comenté a demasiadovivo:
- Voy a instalar Slackware en mi PC.
A lo que él respondió:
- ¿Tenés ganas de meterte en problemas?
Durante un momento me acobardé un poco pero me mantuve firme en mi decisión y un sábado a las 2 de la mañana, luego de cumplir con mis obligaciones, instalé Slackware 13.1. Esta versión viene con el kernel de Linux 2.6.33.4, Xfce 4.6.1, KDE 4.4.3, muchas herramientas de desarrollo (Perl, Python, Ruby, Subversion, KDeveloper, etc.), una variedad de Web browsers (Konqueror, SeaMonkey, Firefox) y una colección de aplicaciones basadas en GTK+ (Pidgin, GIMP, GXine, XChat, etc.) entre lo más destacado. Información más detallada en http://www.slackware.org/announce/13.1.php.
La instalación es muy sencilla, la parte más complicada para un usuario inexperto es el particionamiento de los discos utilizando 'cfdisk', pero para aquellos dinosaurios como yo que instalaron Windows 98 una gran cantidad de veces y particionaban sus discos con 'fdisk'... es pan comido. Si tuvieron la oportunidad de instalar FreeBSD se darán cuenta que el instalador es muy similar, también el manejador de paquetes 'pkgtool' el cual utiliza archivos comprimidos tar. Una limitación que tiene el manejador de paquetes es que no resuelve dependencias, como lo hacen otros manejadores de paquetes (por ejemplo aptitude). Pueden encontrar ayuda oficial para instalar Slackware 13.1 en http://www.slackware.org/install/.

Veamos la instalación paso por paso:

1. Primero tenemos que conseguir un DVD de Slackware, bueno esto es fácil, ingresamos en http://www.slackware.org/getslack/torrents.php y descargamos el torrent de la imagen del DVD (es más practico que 6 CDs) y lo descargamos con nuestro cliente bit-torrent favorito (en mi caso fue transmission). Luego de quemar el DVD booteamos desde la unidad lectora de discos. Ingresamos al sistema como usuario 'root' (sin contraseña).

2. Esta es la parte más compleja de la instalación: crear las particiones. Para hacerlo de la forma más sencilla posible vamos a crear dos particiones: una partición para memoria swap (aproximadamente el doble del tamaño de la memoria RAM para la mayoría de los sistemas) y otra partición para el resto del sistema. Lo ideal es crear particiones separadas para los directorios /boot y /var (y posiblemente también una para /etc). No voy a explicar cómo utilizar 'cfdisk' porque sería muy extenso, pero pueden encontrar una guía en español en http://manual.sidux.com/es/part-cfdisk-es.htm.

3. Teniendo nuestras particiones, ejecutamos el comando 'setup'. Esto inicia el proceso de instalación interactivo que contiene las siguientes etapas: HELP, KEYMAP, ADDSWAP, TARGET, SOURCE, SELECT, INSTALL, CONFIGURE, PKGTOOL, EXIT.

  • KEYMAP: Nos permite elegir el mapa de teclado adecuado (en mi caso qwerty/es).

  • ADDSWAP: Indicamos que partición se utiliza como memoria de intercambio (el proceso es automático).

  • TARGET: Seleccionamos la partición donde instalar el sistema y formateamos con ext4.

  • SOURCE: Detecta el origen de la instalación (en este caso el DVD).

  • SELECT: Seleccionamos el software para instalar, debemos seleccionar todos (KDEI para instalar otros idiomas en KDE, lo que incluye el idioma español).

  • INSTALL: Instalamos seleccionando 'full'. Seleccionamos la instalación de lilo automática, el framebuffer de lilo 'auto' y el destino 'MBR'.

  • Se puede encontrar una guía detallada de la instalación en http://troesma.wordpress.com/2010/05/28/como-se-debe-instalar-slackware/.
Una vez finalizada la instalación reiniciamos la PC y nos topamos con lilo, el cual detectó automáticamente durante la instalación otros sistemas operativos instalados, e iniciamos Slackware. Nos logueamos como 'root' e iniciamos KDE mediante el comando 'startx'. Ya tenemos el sistema funcionando!
Lo que sigue a continuación es una lista de tips post-instalación que fui realizando para "tunear" el sistema de acuerdo a mis necesidades. Son configuraciones simples pero que, una vez hechas, me es imposible recordar cómo las hice, por eso decidí anotarlas y eso me motivó a escribir este artículo.

Agregar un nuevo usuario

Por razones de seguridad, no es conveniente correr el sistema como usuario 'root', por lo tanto lo primero que deberíamos hacer es crear un nuevo usuario. La forma más sencilla es utilizar el manejador de usuarios de KDE (también se puede utilizar el comando 'useradd', ver manual). Iniciamos KUser desde "K > Applications > System > User Manager". Luego utilizamos el botón 'Add', el resto es fácil. Una vez creado el nuevo usuario debemos agregarlo al archivo 'sudoers' para que pueda utilizar el comando 'sudo' y realice tareas de administración. Si no se desea que el usuario pueda utilizar 'sudo' se debe omitir este paso.
Otorgar 'sudo' al nuevo usuario 'emi':
    # visudo

    [Insert]
    emi ALL=(ALL) ALL

    [Esc]
    :wq
Si otorgamos 'sudo' es conveniente agregar las rutas '/usr/local/sbin', '/usr/sbin' y '/sbin' a la variable de entorno $PATH, para que bash encuentre los ejecutables de administración del sistema (por ejemplo 'cfdisk', 'dhclient', 'fsck', 'halt', 'ifconfig', 'ip', 'lilo', 'mkfs', 'mount', 'poweroff', 'reboot', 'umount', etc.):

1- Crear el archivo '.profile' en el directorio $HOME
2- Agregar los directorios a la variable $PATH:
    PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH

Cambiar locale

Para que se visualicen correctamente los acentos y 'ñ' en los nombres de archivo debemos cambiar el 'locale' que es el conjunto de reglas de lenguaje y culturales que se aplica en el sistema. Esto incluye el conjunto de caracteres. Para esto editamos el archivo '/etc/profile.d/lang.sh' de la siguiente forma:

Comentar la línea:
#export LANG=en_US

Descomentar la línea:
export LANG=en_US.UTF-8

Deshabilitar servidor Akonadi:

Akonadi es un servicio de manejo de información personal (PIM) incluido en KDE 4. Administra información como contactos de correo electrónico, notas, alarmas, etc. de forma centralizada en una base de datos MySQL. Este servicio puede consumir recursos como memoria, espacio en disco y CPU. Para mejorar el desempeño de KDE en general decidí deshabilitarlo. Si desinstalamos este paquete, aplicaciones como Kontact, KOrganizer, KMail, etc. dejan de funcionar. Por lo tanto no se debe desinstalar, para resolver esto debemos seleccionar nuevos recursos de almacenamiento de datos de KDE desde "K > System Settings > Advanced > KDE Resources". Por ejemplo se pueden utilizar archivos locales para almacenar datos de contactos. Para más información sobre Akonadi leer http://techbase.kde.org/Projects/PIM/Akonadi#Akonadi_FAQ.

Instalar paquetes

Slackbuilds.org es un repositorio de paquetes que no vienen incluidos en la versión oficial de Slackware. A pesar de no ser oficiales, son referenciados en el sitio oficial de Slackware ya que varios desarrolladores de Slackware también desarrollan scripts para slackbuilds.org. Cabe recordar que Slackware trabaja con paquetes tar comprimidos, por lo tanto en el sitio slackbuilds.org proveen scripts que crean los paquetes tar comprimidos a partir del código fuente del paquete que se desea instalar. Por lo tanto, si deseamos instalar un paquete que no está incluido en la versión oficial de Slackware debemos seguir los siguientes pasos (voy a utilizar OpenOffice.org como ejemplo):
    1. Buscar el script en slackbuilds.org, en este caso "openoffice".
    2. Descargar código fuente del paquete desde el sitio oficial del mismo (en la misma página de slackbuilds.org donde descargamos el script hay un link al fuente del paquete).
    3. Extraer el tarball descargado desde slackbuilds.org y editar el archivo .info si no coincide la versión del fuente descargado.
    4. Colocar el fuente (generalmente un .tar.gz) en la carpeta donde se encuentra el script .Slackbuild. Luego ejecutar el script, el mismo crea el paquete a partir del código fuente.
    5. Instalar el paquete creado en el directorio /tmp utilizando el comando 'installpkg'.
    6. Disfrutar! No es tan complicado como parece.

Personalizar lilo (bootloader)

Si deseamos personalizar lilo, por ejemplo cambiar el timeout, el orden de aparición de los OS o el bitmap, debemos:

1- Editar el archivo /etc/lilo.conf
2- Luego ejecutar lilo para que tome la nueva configuración:
    lilo -C /etc/lilo.conf

Instalar NVIDIA video driver

Para aquellos dueños de placas de video NVIDIA, los pasos son idénticos que para otra distro:
    1- Descargar driver desde www.nvidia.com
    2- Cerrar X (Logout desde KDE)
    3- chmod u+x NVIDIA.run
    4- sh NVIDIA.run
    5- startx
    6- K > Applications > Settings > NVIDIA X Server Settings
    7- Disfrutar!

Instalar mod_perl

Esto tuve que hacerlo para ejecutar Perl en modo cgi (o sea, servir páginas Web escritas en Perl):
    1- Instalar mod_perl utilizando el script de slackbuilds.org.
    2- Editar /etc/httpd/mod_perl.conf si es necesario.
    3- Agregar la siguiente línea en el archivo /etc/httpd/httpd.conf:
      Include /etc/httpd/mod_perl.conf

Iniciar firewall automáticamente

Slackware no utiliza "/etc/init.d/" sino que utiliza "/etc/rc.d/" para cargar demonios automáticamente. En mi caso necesito levantar mi firewall escrito con 'iptables' automáticamente cada vez que inicia el sistema. Para esto:

1- Crear bash script con las reglas de iptables
2- Crear un link simbólico al script en la carpeta /etc/rc.d/:
    ln -s /home/emi/firewall.sh /etc/rc.d/rc.firewall
Ojo con los permisos del archivo firewall.sh! El dueño debe ser 'root' y ni el grupo ni los otros deben tener permisos de lectura/escritura

Agregar etiqueta a una partición (sin formatear)

Acá fue cuando hice macanas, quería asignarle una etiqueta a una partición ext4 y (por no leer el manual completo) utilicé el comando 'mke2fs' con la opción -L lo cual borró la tabla de inodos perdiendo el contenido completo de la partición (como si hubiera formateado una partición NTFS). Afortunadamente, pude recuperar la información utilizando 'e2fsck' y aprendí a asignar una etiqueta sin formatear la partición utilizando el comando:
e2label /dev/sdb4 etiqueta

Personalizar atajos de teclado (multimedia)

Si tenemos un teclado con botones adicionales y queremos cambiar su comportamiento, podemos hacerlo desde:

K > Computer > System Settings > Keyboard & Mouse > Standard Keyboard Shortcuts

Instalar corrección ortográfica (aspell-es)

Para poder corregir la ortografía en idioma español es necesario instalar el diccionario español de GNU Aspell:

1- Descargamos el diccionario español desde: ftp://ftp.gnu.org/gnu/aspell/dict/0index.html.
2- Extraemos el contenido del tarball.
3- Instalamos el diccionario:
    ./configure
    make
    make install

Links

www.damnsmalllinux.org
www.slackbuilds.org
www.slackware.org
www.ubuntu.com
Macros en OOo Calc: ¿Cómo crear tus propias funciones?
Una vez más me encuentro colaborando con este excelente blog de IT. Actualmente estoy capacitando a personal de una importante empresa con casa central en bahía blanca en el uso de OpenOffice. Esta empresa está migrando todos sus sistemas a GNU/Linux y como un aficionado a OOo tuve la oportunidad de dictar seminarios y cursos acerca de esta maravillosa suite de oficina open-source.

Esto también me sirvió para incorporar conocimientos avanzados de estas aplicaciones, principalmente en Calc, por ejemplo en temas como funciones, vincular datos de diferentes libros, piloto de datos (tablas dinámicas de Excel), filtros y áreas de bases de datos, etc. Pero en esta ocasión voy a escribir sobre lo que me resultó más interesante: macros y como crear funciones.

Para comenzar, una macro es una secuencia de comandos guardada para uso posterior. Las macros de OOo se escriben en un lenguaje de programación llamado OpenOffice.org Basic, esto implica que estas macros no funcionan en Excel así como tampoco funcionan las macros de Excel en Calc. Las macros de OOo se organizan en diferentes contenedores de librerías: "Mis macros" contiene macros creadas por el usuario; "Macros de OpenOffice.org" contiene macros incluidas en OOo y no deben modificarse; el resto de los contenedores son los archivos actualmente abiertos. Las macros incluidas en contenedores de documentos abiertos son sólo visibles por los archivos a los que pertenecen, mientras que las macros incluidas en "Mis Macros" y "Macros de OpenOffice.org" son visibles por todos los archivos.

Dentro de cada contenedor, las macros se organizan en librerías de macros. Las librerías incluidas en el contenedor "Macros de OpenOffice.org" y las librerías "Standard" se cargan en memoria automáticamente cuando inicia OOo. El resto de las librerías creadas por el usuario deben cargarse en memoria explícitamente como explicaré más adelante.

La forma más sencilla de crear una macro es utilizando el grabador de macros. Iniciamos el grabador desde "Herramientas > Macros > Grabar macro" el cual abre un cuadro de diálogo para detener el proceso de grabación. Una vez que terminamos de grabar la secuencia de comandos, pulsamos "Finalizar grabación" y se abre el cuadro de diálogo del organizador de macros. Bajo la librería "Standard" en el contenedor "Mis macros" creamos un nuevo módulo llamado "Modulo1" y guardamos la macro con el nombre "miNuevaMacro". Luego podemos ejecutar la macro desde "Herramientas > Macros > Ejecutar macro...".


Este método para crear macros es sencillo, aunque es limitado, ya que por ejemplo las macros grabadas no aceptan parámetros y además el grabador de macros suele tener problemas. Por lo tanto lo mejor es crear y escribir nuevas macros directamente desde el organizador de macros ("Herramientas > Macros > Organizar macros > OpenOffice.org Basic..."). Esto además nos permite escribir nuevas funciones para utilizar luego dentro de las fórmulas.


Manos a la obra...

NOTA: Para los ejemplos se utilizará OpenOffice.org versión 3.0.1.

Primero vamos a crear un nuevo documento llamado "testMacros.ods".

Abrimos el cuadro de diálogo de macros desde "Herramientas > Macros > Organizar macros > OpenOffice.org Basic..." donde se listan los contenedores de librerías y presionamos el botón "Administrar...". En la pestaña "librerías" seleccionamos el documento que creamos como contenedor y presionamos el botón "Nuevo..." para crear una nueva librería llamada "libTestMacros".


A continuación seleccionamos la nueva librería y presionamos "Editar", Calc automáticamente crea un nuevo módulo llamado "Module1" y una macro llamada "Main".


Modificamos el código para incorporar una nueva función:

REM ***** BASIC *****

Sub Main

End Sub

Function porTres(x)
  porTres = x*3
End Function

En el documento recientemente creado, utilizamos la fórmula "=porTres(A1)" para multiplicar por 3 la celda A1. Calc encuentra la macro y ejecuta la función.


Cabe destacar que los nombres de función en Calc no son case sensitive.

Luego de probar la función, guardamos el documento, lo cerramos y lo volvemos a abrir. Si la configuración de seguridad de macros se establece como "Medio" (se cambia desde "Herramientas > Opciones... > OpenOffice.org > Seguridad > Seguridad de macros..."), Calc nos advierte que el documento contiene macros y pueden ser peligrosas, presionamos "Activar Macros" para permitir la ejecución de las macros o "Desactivar Macros" si la macro es un virus.


Cuando el documento carga, Calc no encuentra la función (en la celda muestra "#NAME?"). Esto sucede porque cuando un documento se crea, automáticamente contiene una librería llamada "Standard", ésta librería es cargada en memoria automáticamente cuando se carga el documento, pero el resto no (incluyendo nuestra librería "libTestMacros"). Calc no contiene una función llamada "porTres", por lo tanto busca la función en todas las librerías de macros visibles. Como la librería "testMacros" no está visible (porque aún no ha sido cargada) Calc no encuentra la función.

Desde "Herramientas > Macros > Organizar macros > OpenOffice.org Basic..." expandimos el documento testMacros.ods y observamos que el ícono de la librería "libTestMacros" es diferente (notar grisado), esto significa que no está cargada en memoria. Si presionamos el signo '+' del ícono, vemos que éste cambia, lo que nos indica que se ha cargado en memoria.


Desafortunadamente, la celda que utiliza la función "porTres" sigue mostrando error, esto se debe que Calc no recalcula automáticamente los valores luego de cargar la librería, a menos que se modifique el contenido (podemos probar agregando +0 luego de la llamada a la función). La solución habitual es guardar las funciones en la librería "Standard", aunque si la macro es muy grande podemos crear una función stub con el nombre deseado dentro de la librería "Standard". Esta función stub carga automáticamente la librería deseada (la primera vez que es invocada) y llama a la función original. Para probar esto renombramos nuestra función "porTres" a "porTres_implementacion":

Function porTres_implementacion(x)
  porTres_implementacion = x*3
End Function

Luego creamos la función stub dentro de la librería "Standard" con el siguiente contenido:

Function porTres()
  If NOT BasicLibraries.isLibraryLoaded("libTestMacros") Then
    BasicLibraries.LoadLibrary("libTestMacros")
  End If
  porTres = porTres_implementacion()
End Function

La sentencia condicional verifica que la librería esté cargada, si no es así la carga en memoria y luego llama a la función original de la librería "libTestMacros". Una vez terminado guardamos, cerramos y reabrimos el documento, esta vez la función trabaja correctamente.


Consideraciones adicionales:

La función creada utiliza un parámetro 'x' el cual no es verificado dentro del código, es decir, antes de ser utilizado no se verifica que exista, por lo tanto, si llamamos a la función "porTres" sin parámetros el resultado será un error de ejecución de la macro. Si se desea que un parámetro sea opcional, debe utilizarse el calificador "OPTIONAL". También puede verificarse el parámetro utilizando la función "IsMissing(x)" que retorna verdadero si falta el parámetro. También debe verificarse que el valor sea numérico. El programador de macros (y de cualquier lenguaje) puede ser tan cuidadoso como desee. Cuanto más cuidadoso sea más robusto será el código, aunque tratándose de macros, cuanto mayor sea la cantidad de chequeos más lenta será la ejecución.
Los argumentos pasados a macros son siempre parámetros por valor, si se desea utilizar un parámetro por referencia, debe enviarse la referencia como un string (por ejemplo: "A1:C3") y luego se debe parsear el contenido. Se puede acceder a las celda A1 de la Hoja 1 del documento a través de una llamada:

ThisComponent.getSheets().getByIndex(0).GetCellByPosition(0,0)


Para más información sobre programación de macros de Calc referirse a:

http://www.pitonyak.org/oo.php