Planeta
Gimpology cientos de tutoriales y recursos para Gimp
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
LiNUX+ 9/2010 (69)
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Open Clip Art librería de imágenes vectoriales de dominio público
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
PhotoFilmStrip crea vídeos con imágenes
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Richard Baraniuk habla sobre aprendizaje de código abierto
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Charlas tecol son toda una realidad
Las iniciativas muchas veces quedan ahí, en simples iniciativas que no llegan a concretarse. Del dicho al hecho puede haber mucho trecho, pero no en esta ocasión. Tan solo tres semanas le tomó a Victor Castro llegar a materializar aquella idea que repentinamente iluminó su mente. Este corto período de tiempo fue suficiente para darle vida a lo que ahora conocemos como Charlas sobre Tecnologías para el Conocimiento Libre (tecol).
Javier Castro dio la primera Charla tecol
Esta iniciativa no tiene otra razón de ser más que la de incrementar el nivel técnico de quienes buscan crecer en lo que a tecnologías libres se refiere, tecnologías sin restricciones que permiten su libre reutilización, reduciendo la brecha digital y la dependencia de proveedores que limitan la utilización de sus productos.
Estas charlas se realizarán mes a mes de manera indefinida, tocando temas como virtualización de sistemas, soporte a usuarios, diseño gráfico, producción audiovisual y otros.
La primera presentación se planeó para llevarse a cabo el pasado 26 de agosto en el Auditorio Roberto Murillo de la Facultad de Letras. Muy puntual fue llegando el público y a través de redes sociales ya se leían los primeros reportes de quienes esperaban la transmisión via streaming. A las 5:15 pm ya estaba todo listo así que dio inicio la charla titulada Máquinas Virtuales con QEMU a cargo de Javier Castro.
Devcheatsheets descarga cientos de hojas de referencia para desarrolladores
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
PDF-Shuffler te permite unir varios documentos pdfs en uno solo
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Prey pequeño programa que te ayudará a encontrar tu computadora en caso de robo
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
ThemZa plantillas gratis de alta calidad para CMS
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Descarga gratuitamente miles de iconos para tus diseños
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Phatch procesamiento de imágenes por lotes
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
Gimp FX Foundry agrega más de 100 efectos adicionales a tu Gimp
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'Array' was given in /home/th000843/public_html/blog/wp-includes/plugin.php on line 166
XMind excelente herramienta para la elaboración de mapas mentales
Open Atrium excelente alternativa Open Source para crear una intranet
Scribus herramienta para maquetación de revistas y documentos impresos y electrónicos
AlternativeTo un excelente sitio web para buscar alternativas libres al software que utilizamos
Espectacular colección de brochas para Gimp
Lo bugs que sí y los bugs que no
Leí un correo de Ian Jackson en el que se refería específicamente al error de pensar que todas las personas pueden y deben reportar bugs. Me gustaría traducirlo completo pero ahora mismo no puedo. En resumen, más o menos planteaba -con más sinceridad de la que mucha gente agradece- que para el caso de Debian, si un desarrollador debe gastar dos de sus cuatro horas diarias de programación para responderle a personas usuarias que reportan bugs que en su mayoría, son errores de procedimiento… eso no es beneficioso para el proyecto debian. Para él, “mimar” a las personas usuarias de esa manera no contribuye en nada. Habla de varias falacias muy interesantes y si leen inglés, por favor revisen el correo antes de seguir leyendo aquí (que mi resumen es muy pobre, la verdad).
Aunque puede parecer chocante… la verdad sea dicha: tiene razón. Tiene razón cuando hablamos de proyectos de desarrollo de un sistema operativo o aplicaciones horizontales. Todos los desarrolladores saben cómo debe comportarse un sistema operativo. Es decir, en la mayoría de los casos, los reportes no le dirán nada nuevo y si no los hacen personas con suficientes conocimientos, no contribuirán en mucho a encontrar la solución. –> Hace un año me hubiera pegado por la mano por escribir una cosa así.
¿En dónde sí vale la pena reportar bugs?
No sé… imagino que en desarrollos como Gimp o aplicaciones para sectores u ocupaciones específicas. Ahí sí los desarrolladores no saben qué es lo que se espera del programa (supongo) y ¿se necesita de mucha guía de personas usuarias que sí saben qué es lo que el programa debe hacer o cómo, lo que imaginan, no puede ser implementado a partir de la herramienta?
¿Y entonces, cómo mejoramos el software?
También, es importante reportar el otro tipo de bugs… los bugs generados por la endogamia hacker: ¿qué cosas no son útiles a las personas usuarias? Habría que generar espacios distintos, algo como grupos focales que permitan recibir observaciones sobre cosas que no se reciben bien, errores comunes en una interfaz, campañas equivocadas o actitudes que nos alejan de los proyectos. Es decir, por mucho tiempo las personas que no programamos, hemos pensado que debemos convertirnos en lo que no somos, para poder reportar bugs y ayudar “de verdad”. Tal vez la pista esté en otro tipo de reportes que debemos hacer e incluso, en no reportar nada más, sino involucrarnos de lleno en organizar el cambio. Y ahí es donde topamos con pared: ¿en cuáles espacios podemos mejorar el software quienes no programamos? ¿tenemos que conformarnos con probar versiones nuevas de los programas? ¿tenemos que dedicar nuestra energía a aprender a reportar bugs apropiadamente en lugar de aprovechar las capacidades que ya tenemos?
Para nada de eso tengo respuesta. Yo sólo tengo dudas.
Iniciar máquinas virtuales de VirtualBox al inicio
Tengo una máquina virtual que quiero que inicie cada vez que bootea el servidor. Tanto mi VM como el servidor físico son Debian Lenny, ambos con openssh-server instalado como demonio de SSH para administrarlos, por lo que adrede no habilito el RDP de la VM y la corro como headless.
1. Iniciar las máquinas virtual
Para iniciar las máquinas ponemos esto en nuestro archivo /etc/rc.local :
#/bin/bash -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# VirtualBox start virtual machines on boot
# VMs Run user
RUN_USER=userexecutesvm
# VM run type. Options are [gui|sdl|vrdp|headless]. Check 'VBoxManage startvm'
VM_RUN_TYPE=headless
# Put the ID of the VMs. You can put the unique id (ex. da52db1a-5b6e-4297-b4b6-aa9e293efcc8)
# or the human friendly VM name (ex. "Name of the VM").
# Check 'VBoxManage --nologo list vms' for information about your VMs
# Example variable:
# VMS=("Name of the VM 1" "Name of the VM2" da52db1a-5b6e-4297-b4b6-aa9e293efcc8)
VMS=("Name of the VM")
# Check for missing binaries
VIRTUALBOX_BIN=/usr/bin/VBoxManage
test -x $VIRTUALBOX_BIN || { echo "$VIRTUALBOX_BIN not installed"; exit 5; }
# Start the VMs
for i in "${VMS[@]}"
do
su - $RUN_USER -c "$VIRTUALBOX_BIN --nologo startvm '${i}' --type $VM_RUN_TYPE"
done
exit 0
En WordPress se ve muy mal, pueden revisar el script en http://www.cjenkins.net/files/rc.local
Es importante que cambien el usuario con el que ejecutarán las VM y que no sea root por seguridad. Está de más decir que el usuario es el mismo que con el que ejecutan normalmente la VM. El script /etc/rc.local es llamado sin argumentos por el script /etc/init.d/rc.local , pueden revisarlo para conocer como funciona. Ese script se encuentra enlazado como S99rc.local en los Run Levels 2 al 5 (link simbólico /etc/rcX.d/S99rc.local), que en Debian significan lo mismo. Por lo que entonces tenemos cubierto el inicio de la VMs.
2. Detener las VMs
Inicialmente cree mi propio script para detener las VMs. Sin embargo noté que existe el script /etc/init.d/vboxdrv . Al revisarlo, observé una buena implementación llamada stop_vms. El encabezado de la función menciona:
# enter the following variables in /etc/default/virtualbox:
# SHUTDOWN_USERS="foo bar"
# check for running VMs of user foo and user bar
# SHUTDOWN=poweroff
# SHUTDOWN=acpibutton
# SHUTDOWN=savestate
# select one of these shutdown methods for running VMs
Por lo que creamos el archivo /etc/default/virtualbox (ya que por defecto no existe) de esta forma:
host:~# nano /etc/default/virtualbox
SHUTDOWN_USERS="usuarioejecutavms"
SHUTDOWN=savestate
Ese script se encuentra enlazado como S20vboxdrv en los Run Levels 2 al 5 (link simbólico /etc/rcX.d/S20vboxdrv). Y como K20vboxdrv en los Run Levels 0, 1 y 6 (link simbólico /etc/rcX.d/K20vboxdrv). Es decir, que se llamará el script /etc/init.d/vboxdrv con el argumento stop cuando se apague el sistema (Run Level 0), se inicie como single-user mode (Run Level 1) o se reinicie el sistema (Run Level 6). El script vboxdrv sólo llama a stop_vms cuando se le llama con el argumento stop. Es decir, que las máquinas virtuales de los usuarios de la variables se apagarán usando el método especificado (en mi caso puse savestate) en dichos casos.
Con esto ya queda funcionando el sistema.
En resumen: El sistema al ejecutar rc.local se encarga de iniciar nuestras VMs. Al apagar o reiniciar vboxdrv se encarga de apagar nuestras VMs de forma como lo configuramos en /etc/default/virtualbox.


