Buscar aquí

martes, 10 de noviembre de 2009

Escoger ruta: JFileChooser

A la hora de seleccionar la ruta para guardar o obtner un archivo el control JFileChooser es la solucion. A continuacion doy una pequeña descripcion de como usar el control:

JFileChooser jfc= new JFileChooser(); //Se define el nuevo control JFileChooser
int seleccion=jfc.showOpenDialog(this); //Se muestra el control y se guarda un valor
if(seleccion==jfc.APPROVE_OPTION) //int asociado con la accion del usuario
{
File archivo=jfc.getSelectedFile(); // Se guarda una referencia al archivo
path=jfc.getSelectedFile().getAbsolutePath(); //tomo la ruta del archivo
}

Con eso ya tenemos la ruta y el archivo....

domingo, 1 de noviembre de 2009

Compartir directorio VirtualBox: Anfitrion Ubuntu, Huesped Windows

Es muy útil compartir un directorio entre el SO anfitrión y el SO que hospeda VirtualBox, a continuación voy a explicar como hacer ese procedimiento entre Ubuntu - Windows.

Primero con click derecho sobre la maquina virtual en cuestión ve a configuración, y al ítem Directorios Compartidos, ahi click en icono de la carpeta con el mas en el lado derecho; se abre una ventana que se llama Agregar Comparticion, tiene la opcion Folder Path y la opcion Folder Name; se despliega el combo Folder Name y en la opcion Otro podemos navegar a la ruta de Ubuntu a compartir.

















Click en aceptar y de nuevo en aceptar.
Inicia la maquina virtual y ve a inicio y da click derecho en Mi PC, en conectar a unidad de red


















Se abrirá una ventana llamada Conectar a unidad de red y ahí en el ítem carpeta damos click en examinar, que abrirá Buscar Carpeta.
Si expandimos el arbol en la opcion VirtualBox shared Folders podemos ver las carpetas que hallamos compartido, en este caso mi home y media, para tener todos los dispositivos de almacenamiento conectados automáticamente, aunque VirtualBox puede gestionar la conexión de las memorias usb como tales.
Selecciona el que quieres agregar y click en aceptar, suele ser un poco lento para esta parte pero funciona. Luego en Conectar a unidad de red click en Finalizar. Y repetimos hasta haber agregado todo lo requerido.

















Ahora, si vamos a Mi PC podemos ver y acceder a las carpetas como si fueran unidades de red.

domingo, 4 de octubre de 2009

Pasar un arreglo en PHP a uno en JavaScript


El otro día necesitaba hacer una aplicación para administrar contactos que trabajan para sucursales de un almacén en distintas ciudades.
Ahora bien, en el formulario para llenar la información de contacto hay un combo que se despliega mostrando las ciudades en las que hay almacenes, ahí se puede seleccionar la ciudad en la que labora el contacto y el siguiente campo es un combo que se despliega mostrando los almacenes de dicha ciudad, por que no seria ni estético ni funcional mostrar todos los almacenes si ya se discrimino una ciudad, y para llenar el combo de almacén debo ejecutar a una consulta en la BD que seleccione los almacenes que están en la ciudad escogida en el combo:

select almacen from almacenes where ciudad = "ciudad seleccionada en el combo"

donde almacen es el nombre del almacen y almacenes la tabla, pero esto me implicaria enviar la pagina solo para obtener eso y luego enviarla de nuevo para guardar, me pregunte entonces si no podria obtener todos los almacenes con sus ciudades:

$con="select almacen, ciudad from almacen";
$res=mysqli_query($link,$con);


y guardarlo todo en un arreglo:

$f=mysqli_fetch_array($res)

y que se envié el arreglo de php a la pagina en un arreglo javascript para que en una funcion javascript se decida como se va a llenar el combo de almacén.

Asi fue como lo hice:

$i=mysqli_num_rows($res);

Rescato cuantas filas devolvio la consulta, cuantos almacenes tenemos.


echo "<script language='javascript'> var almacencito= new Array($i); </script>";
echo "<script language='javascript'>var ciudad = new Array($i); </script>";


Defino desde el codigo php dos arreglos que tengan por tamaño tantas filas tiene la consulta.
Y cargo cada campo del arreglo de javascript con cada campo de la consulta que esta en php.

while($f=mysqli_fetch_array($res)){
$temporal=$f['ciudad'];
echo "<script language='javascript'>ciudad[$i]='$temporal';</script>";
$temporal=$f['almacen'];
echo "<script language='javascript'>almacencito[$i]='$temporal'; </script>";
$i++;
}



Asi cuando ya se ha seleccionado el campo ciudad una funcion javascript llena el combo almacen.

function almacen()
{
var i=0;
var k=0;
var j= document.f1.ciudad.selectedIndex;
while(i<ciudad.length)
alert(document.f1.ciudad.selectedIndex+" "+i.toString()+" "+almacencito[i].toString());
if(document.f1.ciudad.options[j].text==ciudad[i])
{
document.f1.Almacen.length=k+1;
document.f1.Almacen.options[k].value=almacencito[i].toString();
document.f1.Almacen.options[k].text=almacencito[i].toString();
k++;
}
i++;
}
}


Se que existen formas mas eficientes y sofisticadas de hacer esto, pero esta me saco de un apuro.

Comando apt-get al rescate

El otro día intente torpe y tontamente actualizar mi Amarok 2.1 (que me dejo con ganas de mi Amarok 1.4) a Amarok 2.2, pero cual fue mi sorpresa cuando al día siguiente prendí de nuevo el compu, todo era caos y desolación, habia perdido plasma. Se estaba ejecutando pero, y aunque no lo puedo explicar mejor que esto, muchas de sus partes no funcionaban, tenia el panel de kde (barra de tareas), el reloj, pero de ahi en adelante nada, no aparecias las aplicaciones en ejecución el panel y tampoco tenia escritorio, nada ni fondo ni plasmoides ni nada.
Soy bastante novata y la verdad estaba bien perdida y no fue mucho, practicamente nada lo que encontre en Internet.
Asi que intente razonar que podia estar pasando y que era lo que habia hecho que podia producir eso, asi due como le heche la culpa a Amarok, pues al intentar actualizar seguramente se habian instalado librerias y paquetes que entraban en conflicto con KDE 4.2 (si estoy hablando muchas tonterias que alguien me corrija), pero el caso es que la solución que le di funciono y me hace pensar que estoy no totamente pero casi complatamente en lo cierto.

Al iniciar por gnome me decia que se habia intentando una actualizacion que no habia terminado bien, (lo que es tecnicamente cierto).

Intente sudo apt-get update: que se usa para sincronizar el índice de paquetes respecto a sus fuentes, de los lugares especificados en /etc/apt/sources.list. Por ejemplo, cuando se usa un archivo de Debian, esta orden descarga y analiza los ficheros Packages.gz, de tal forma que la información acerca de nuevos paquetes pasa a estar disponible. Siempre se debe realizar un update antes de un upgrade o un dist-upgrade. (según el manual de apt-get).

No funciono obviamente por que apt-get update solo descargará descripciones. Es con propósito informativo.

Pude haber intentado un upgrade: se usa para instalar la versión más nueva de todos los paquetes instalados en el sistema provenientes de alguna de las fuentes listadas en /etc/apt/sources.list. Los paquetes instalados con una nueva versión disponible son descargados y actualizados, bajo ninguna circunstancia se desinstalarán paquetes, o se instalarán paquetes nuevos. Las nuevas versiones de programas instalados que no puedan ser actualizados sin cambiar el estado de instalación de otros paquetes no se instalarán, manteniéndose la versión actual. Debe realizarse un update antes para que apt-get sepa cuales son las versiones disponibles de los paquetes.

Pero al final me decidi por dist-upgrade: además de realizar las acciones de upgrade, maneja inteligentemente los cambios de dependencias debidos a nuevas versiones de paquetes, tiene un sofisticado sistema de resolución de conflictos, si es necesario tratará de actualizar los paquetes más importantes a costa de los menos importantes.

Esto se oye mas impresionante y prometedor, sobre todo si se tiene un conflicto tan extraño de dependencias.

Lo intente: sudo apt-get dist-upgrade.
Pero no funciono, mas conflictos. Asi que por consejo de la terminal intente lo mismo pero con --fix-missing, que no tiene en cuenta los paquetes que no se hayan podido descargar o que después de la descarga se encuentren dañados, estos paquetes se tratan como no modificables y se continúa con el resto. Si un paquete se selecciona para su normal instalación (particularmente si se hace mediante la línea de órdenes) y no puede ser descargado, será tratado como no modificable.

Esto obviamente tiene sus riesgos, pues luego de leer queda claro que arrasara con quien se interponga en su camino, pero la verdad aun no encontrado nada de lo que deba arrepentirme, quede con kde 4.3 y todo esta bien, un paquete quedo roto, kstart, y lo arregle con synaptic.
Y sigo con Amarok 2.1, creo que lo voy a dejar asi unos días.

Supongo que no es la solución mas ortodoxa, ya que lo que hice fue actualizar. Pero funciono y kde 4.3 esta super.

Bibliografía: paginas que me fueron de utilidad. Muchas gracias!!!! xD

jueves, 10 de septiembre de 2009

MessageBox en Java

Desde C# en .NET se puede lanzar una ventanita de alerta con MessageBox, para obtener lo mismo en Java se usa:

JOptionPane.showMessageDialog(Form formulario,String mensaje);

ASi no lo olvido de nuevo!!!.xD.

sábado, 18 de julio de 2009

Escuchar Emisoras On-Line Linux

Cuando en Windows quieres escuchar una emisora que tiene un flujo on-line es muy simple...un click y listo, por que están directamente relacionadas con el Reproductor de Windows Media Player.

Bueno...en Linux hay solución.

Instala en Firefox el siguiente complemento:

Media Player Connectivity

Luego de que se ha instalado el te pide que lo configures, aunque también se puede configurar luego en Herramientas -> Media Player Connectivity -> Configurar, en la pestaña Reproductores Multimedia, en Windows Media viene configurado con VLC pero no funciona, cambialo por Amarok que se que funciona y yo uso, o cualquier otro reproductor que acepte flujos de radio.
El ejecutable de Amarok y de casi todos los demás esta en: /usr/bin.

Cuando llegues a donde las paginas de las emisoras te envían para oír la emisora sale un icono negro con un play en la mitad, click y ya.

sábado, 20 de junio de 2009

Lo que se aprendió con mysql...errores y demás

Por fin.... después de muchas canas se pudo interactuar con la instalación por defecto de mysql, php y apache y la instalación de xampp o lampp. Bueno, a mi se me dio un poco más rápido que a mi novia, pero la cosa fue que al principio, cuando uno arranca lampp (lampp start), si uno tiene bien configurado el apache, y, le arranca al principio, bueno, pues toca pararlo porque si no, aparece el siguiente error:

XAMPP: Starting Apache with SSL (and PHP5)...
XAMPP: Error 1! Couldn't start Apache!
XAMPP: Starting diagnose...
XAMPP: Sorry, I've no idea what's going wrong.
XAMPP: Please contact our forum http://www.apachefriends.org/f/

ok, pues /etc/init.d/apache2 stop, y luego $PATH_DEL_LAMPP/lampp start

ok, bueno, para la interacción de phpmyadmin, el truco está en los sockets, entonces, le damos

updatedb
locate config.inc.php

El archivo config.inc.php guarda las configuraciones de mysql, entonces buscamos las líneas correspondientes a esa configuración y copiamos, que quede exactamente igual, el socket y el puerto, en mi caso fue

puerto: 3306
socket: /var/run/mysqld/mysqld.sock

y listo!!!

Ahora bien, como comentaba, a mi novia le pasó algo muy raro, al tratar de instalar mysql-server-5.0, le aparecía el siquiente error

invoke-rc.d: initscript mysql, action "start" failed.

pues bien, existen varias cosas que se hicieron de las cuales funcionó la última. La primera fue descomentar la línea de innodb en /etc/mysql/my.cnf, la segunda, cambiar 127.0.0.1 por localhost, y la última verificar que el socket anteriormente mencionado no este en uso, para esto hacemos

lsof | grep mysql

y buscamos que no esté, si esta. le damos

pkill mysqld

y yastá!!!

domingo, 24 de mayo de 2009

xmessage y crontab

Tratando de mostrar lo mucho que amo a mi mujer, Luisa Quiroga, quise enviarle un mensaje desde mi pc al de ella, diciéndole lo que siento, pero cómo? la respuesta la encontré aquí: http://www.geocities.com/wolfgangpfeiffer/xmessage, pero está en inglés, traduzco la parte que creo necesaria para lograr mi cometido. En sí, el programilla se llama xmessage y lo que muestra es un mensaje al estilo pop-up en tu maquina. Si quieres probarlo, bueno, instálalo, XD XD XD, (en tu linux -requires GNU/linux or better, im sorry ms-) cuando lo hallas hecho, dale:
$xmessage Hola
sin el $, por supuesto. Ahora, que si lo quieres hacer como lo hice yo, métete por ssh al pc de ella, y luego le das:
$sudo su - login_de_ella -c '/usr/bin/xmessage -display :0.0 -timeout 10 -center "Te amo hasta el infinito y más allá" & '
Ahora, si lo que quieres es recordárselo, puedes darle:
$ export VISUAL=pico
desde Bash o alguno compatible o
$ setenv VISUAL pico
desde C-shell
esto para decirle a tu máquina (o a la de ella) que editor use, si te gusta emacs, o vi, o nano, reemplázalo por pico...
ahora dále
$crontab -e
se abrirá tu editor, escribe:
24 15 * * * DISPLAY=:0.0 /usr/bin/xmessage -timeout 10 -center "Te amo una vez, te amo dos veces, te amo más que las pasas y que las nueces"
le das -x, le das S (o Y), luego enter, y él te dirá installing new crontab
Luego le das
$crontab -l
(l es la letra ele) para ver lo que hiciste, lo cual es que a las 15:24 (3:24pm) aparecerá una ventana con el msj escrito en negrita
Tienes que asegurarte que el programa esté en /usr/bin, asi que dále find o whereis. Ahora, lo que acabamos de hacer es decirle a crontab que ejecute el comando /usr/bin/xmessage a las 15:24 todos los días del año, esto es, la primera columna son los minutos (de 0 a 59), la segunda, las horas (de 0 a 23), la tercera (el primer asterisco) el día del mes (de 1 a 31), la cuarta (el segundo asterisco), el mes (de 1 a 12, o jan, feb, mar...), y la última, el día (de 1 a 7, o mon, tue, sun...). Para especificar la pantalla, le das, despues del comando -display 127.0.0.1:0.0.

Para ejecutarlo como root, o desde un usuario a otro, le das al editor de crontab:
30 21 * * * su - usuario -c '/path/to/your/xmessage -display :0.0 "Hola, usuario, aqui está tu mensaje" &'

o

30 21 * * * sudo su - usuario -c '/path/to/your/xmessage -display :0.0 "Hola, usuario, este mensaje es para ti" &'

en caso de estar en ubuntu

Espero que funcione, y cualquier duda no olvideís escribidme

Saludos desde la Universidad Distrital, Bogotá,Colombia...

martes, 5 de mayo de 2009

Imagen .nrg a .iso

Resulta que me descargue una imagen de un programa pero estaba en el formato de Nero .nrg y encontre esta forma para pasarlo a .iso, por ejemplo para que lo reconosca k3b.



  1. Instalas este programita, nrg2iso, muy diciente: $ sudo apt-get install nrg2iso.

  2. Luego simplemente vas a la carpeta donde esta guardado tu .nrg y dices: nrg2iso [nrg-file] [iso-file]. Basicamente, archivo de origen archivo de destino.

miércoles, 22 de abril de 2009

De nuevo VirtualBox!!!!!! kernel driver not instaled

Yo tengo un problemita de sonido....y me puse a molestar con versiones del kernel para ver si se arreglaba asi, pero no....en cambio VirtualBox resintio tantos cambios y la verdad no se por que se negaba a iniciar la maquina virtual sacando un mensaje de error asi:

kernel driver not instalñed virtual box
  • Pero lo sierto es que si estaba instalado y yo seguia usando el mismo kernel de siempre.....el caso es que como buena despistada se daño no se porque. Pero lo que me interesa compartir es como lo arregle. Tienes que instalar las cabeceras kernel, que son algo asi...y no es una definicion precisa...sino lo que yo entendi....bien, incluyen los archivos de cabecera de C que especifican la interfaz entre el Kernel de linux y el userpace de bigliotecas y programas. Los archivos de cabecera definen estructuras y constantes que son requeridas para construir programas mas tipicos. Esto se hace asi:
sudo aptitude install linux-headers-$(uname -r)
  • Luego hay que instalar el controlador para el kernel de VirtualBox, asi:
sudo /etc/init.d/vboxdrv setup

Y luego funciono......
Si alguien me cuenta por que funcionaba....jugue los las versiones del kernel....y aun volviendo a la anterior funciono lo agradeceria.

Chau....

jueves, 16 de abril de 2009

Usar Virtualbox en una terminal grafica aparte

Gracias a: http://tehsis.com.ar/

Para quien no lo sepa, Virtualbox es una herramienta espectacular para crear y usar maquinas

Virtual Box

Virtual Box

virtuales. Recientemente adquirido por Sun, Virtualbox nos permite correr sistemas operativos dentro de una maquina virtual que podemos crear con distintas opciones, como la cantidad de ram, los dispositivos que vamos a usar, etc etc.

Una de las cosas que siempre quice hacer, era poder ejecutar VB en una terminal nueva, de modo que me permita presionar “Ctrl + Alt + F8″ , estar en Windows y volver a Linux con “Ctrl + Alt + F7″. Cuando probé hacerlo, hace un año más o menos, a pesar de que ejecutaba VB en otra terminal, siempre creaba sus ventanas en la terminal 0. La verdad no probé mucho más.
Como hace poco comencé a participar en un grupo de estudio de .net y necesitaba usar Visual Studio, recurrí a VirtualBox para usar Windows y no tener que lidiar con diversas cuestiones (como tener que configurar cosas raras para que windows lea la musica que tengo en una particion ext3) y como no, volví a probar si podia hacer lo que comentaba más arriba, mi sorpresa fue, que ahora no había problemas, Virtualbox se ejecutaba perfectamente en la terminal donde era invocado, haciendo realidad mi tan preciado sueño (pasar de un sistema a otro en menos de 1 segundo).

Inicialmente simplemente ejecutaba “xinit — :1″ y desde xterm llamaba a Virtualbox, pero luego esto se torno repetitivo y aburrido así que leyendo un poco del man de xinit, aprendí que podia ejecutar directamente Virtualbox en la nueva terminal simplemente haciendo:

#xinit /usr/bin/virtualbox — :1

y para hacer un poco más general la cosa, busque por google un script que verifique cual es la siguiente terminal libre y allí abra la nueva terminal.
Modificandolo para que ejecutase virtualbox, quedo así:

for display in 0 1 2 3 4 5
{
if [ ! -f "/tmp/.X$display-lock" ] #Si no existe el archivo, no se esta usando la terminal $display
then
exec xinit /usr/bin/virtualbox — :$display
exit0
fi

Guardé eso en un archivo llamado vbox.sh, le di permisos de ejecución (chmod o+x vbox.sh), cree un enlace simbolico en mí desktop y listo… Otro sistema operativo en cuestion de clicks ^_^

Lo malo de esto, es que no encotre forma de ejecutar la maquina virtual de Windows directamente, sin tener que pasar por la pantalla principal.

Además, si queremos ejecutarlo, digamos, antes del inicio del gestor gráfico (xdm, gdm, kdm) podemos incluir en el archivo rc.local (/etc/rc.local , en debian y sus derivados: *buntu) la línea:

xinit /usr/bin/VBoxSDL "Nombre de la máquina" -- :0 (ó :1 :2 ...)

esto, para alguien desparchado que quiera iniciar GNU/Linux para iniciar la máquina virtual (???)

martes, 14 de abril de 2009

PIDO DISCULPAS

Pido disculpas por el contenido aquí publicado, ya que no aparece referencia a sus autores, de ahora en adelante lo haré

martes, 24 de marzo de 2009

Números reales, complejos, enteros.... en latex

Para poner el símbolo de los números Reales como una R con línea doble en el lado izquierdo, se usa el paquete dsfont:

usepackage{dsfont}

y la letra R se obtiene con mathds{R}.

Este mismo comando se usa para obtener la letra C de números complejos y el conjunto de números naturales y enteros: mathds{C}, mathds{N}, mathds{Z}