Archivo de la Categoría Tecnologia

Anoche necesitaba asegurarme de que mi notebook tirara sin problemas la señal de video por la salida de monitor. Pase unos cuantos minutos tratando de acordarme como iniciar la aplicación de ATI para controlar algunas cosas de la tarjeta de video… pero así y todo no funciona adecuadamente… me tuve que ir con el plan B bajo la manga para el trabajo hoy día.
Luego de un break me puse a revisar las opciones de aticonfig y ahí estaba lo que necesitaba:
aticonfig --enable-monitor=auto
Y lo hace mejor de lo que esperaba…. no es necesario reiniciar la X.
Curiosamente, hoy vi a jotape y le comentaba al Ati (no a la tarjeta… a un amigo), sobre esta mismo comando pero con otras opciones, en donde le especificaba las salidas a ocupar. Ambos destacamos la no necesidad de relevantar la X.
En mis narices y nunca lo revise con calma.
Mi equipo es un Acer Aspire 5050 y tiene Ubuntu 7.10, con una ATI Radeon XPress 1100 y el kernel 2.6.22-14-generic sin ninguna modificación.

En la aplicación que estoy haciendo en mi tema de memoria, me topé con un problema. Bueno, en realidad el problema me lo planteo mi profesor guía. Contextualizando un poco el asunto, estoy haciendo una aplicación en java y es de escritorio, por lo que también ocupo Swing para la interfaz gráfica.
El cuento es que necesitaba mostrar unos resultados de una consulta a una base de datos y al tener muchos registros como respuesta al mostrarlos en un JTable iba a ser algo costoso en cuanto al uso de memoria ram. Originalmente estaba ocupando un ArrayList el cual mostraba ocupando un JTable. Eso implicaba tener TODOS los registros de la consulta en memoria. Si calculamos a vuelo de pájaro que cada registro ocupaba 120 caracteres a un costo de 1 byte por carácter por unos miserables 500 registros, tenemos 60000 bytes, dividiento por 1024, tendríamos 58.59 mbkb (espero que el calculo este bien hechoestaba mal hecho :)) en el puro arreglo… lo que es bastante poco eficiente. Así que una de mis misiones era darle un vistazo a eso y encontrar alguna manera eficiente de hacerlo.
Obviamente no quise reinventar la rueda y me tope con un exelente articulo el cual incluye tambien unas clases.
La gracia de lo anterior, es que en vez de ocupar el modelo por defecto que por ejemplo nos ofrece NetBeans es setear nuestro propio modelo el cual se va cargando a medida que lo vamos necesitando (en la práctica, cada vez que pinchamos el scroll). Esta muy bien documentada la clase y tiene varios constructores. Un ejempo de uso de los anterior seria el siguiente extracto de código:

//Creamos nuestra conexión a la base de datos
Connection conexion = Utiles.ManejadorConexionSql.conectarBd();
//hacemos una llamada a la base de datos
String stringConsulta = "select * from algunaTabla";
//Seteamos el Statement como es requisito para nuestra clase que hace la magia
Statement consulta = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//Obtenemos nuestro resultset.
ResultSet resultado = consulta.executeQuery(stringConsulta);
//Creamos la clase que nos dara nuestro modelo
ScrollableTableModel tablaModelo = new ScrollableTableModel(resultado);
//Le ajustamos el modelos a nuestra tabla
jTaableResultado.setModel(tablaModelo);

En el documento esta muy claro explicado como lo hace internamente para quien quiera destripar la clase.

Trabajando en mi proyecto de título, me tope con un problema. Contextualizando un poco el problema:

  • una tabla con un campo serial (autogenerado).
  • una tabla que necesita como llave foranea, el campo serial anterior
  • para ingresar valores a las tablas anteriores, ambas se hacen a través de funciones de postgres.
  • jdbc de postgres
  • La interfaz de jdbc provee el método getGeneratedKeys() que debiera entregar un ResultSet, con todos las llaves que se crearon. Después de un (buen) rato viendo que porque no funcionaba y buscar el problema en mi código dí con las primeras luces de mi problema:

  • La versión que estoy ocupando del jdbc es la última a la fecha 8.3-603 no soporta este método y lamentablemente al ejecutarlo no tira una exception gritando acerca de esto, como al parecer lo hacia en versiones anteriores.
  • Obviamente muy empantanado y sin mucho tiempo de leer la documentación recurrí a la lista en español de postgresql donde me ayudaron a reescribir la función en cuestion, quedando de la siguiente manera:


    CREATE OR REPLACE function ingresarVoucherEntrada( _idEmpleado "int4", _idProveedor "int4", _fechaEmision"date", _documentoAsociado"int4")
    returns int as $$
    insert into voucherEntrada (idEmpleado, idProveedor, fechaEmision, docuementoasociado)
    values ($1, $2, $3,$4);
    select currval(‘voucherentrada_idvoucherentrada_seq’)::int;
    $$ LANGUAGE ’sql’ VOLATILE;

    La parte en negrita es lo que hace la magia. Devuelve un entero, que es el entero que tiene la llave que me interesa recuperar. Y ¿cómo la recupero? Seleccionando el “valor actual” de la secuencia del “voucherentrada_idvoucherentrada_seq”.
    Esta última secuencia (sequence) se genera automáticamente al definir un campo como serial.
    Luego, mi método que ocupa esta función, tiene que devolver el identificador del registro que se ha creado recientemente y se lo paso como parámetro al método que llena la tabla usando el identificador de la primera tabla.

    Bueno… una estafa o mi hermano y yo tenemos una comprensión de lectura que apesta. En febrero me llegó el siguiente mensaje:

    sms0

    sms1

    El cual transcribo a continuación:
    “Desde 01/03/08 navega por i-shop y WAP desde tu EPCS por solo $250 la sesion de 2MB, tras ellos se cuenta otra sesion. Mas info en www.entelpcs.cl o en el *100″ (Lo mismo que intente capturar en las fotografias adjuntas).

    El cuento es que hoy por primera vez ocupe el servicio y después de probar algunas conexiones (a http://m.google.cl, al sitio de ishop de EntelPcs, a Samsung Fun Club y a uno para bajar juegos para mi Samsung C406.)
    Obviamente no alcance a descargar 2 MB en estas conexiones. Al rato reviso el saldo y me faltaban como CL$1750 del saldo total. Raro dije yo…
    Llamo a EntelPcs y me salen con el siguiente chiste:
    Usted entendió mal… una sesión se refiere a cada vez que usted se conecta y se desconecta. Baje 1 KB o los 2MB.
    O sea, como me conecte al parecer a 7 sitios distintos, me han cobrado CL$1750.- Obviamente llame para reclamar (por cierto la ejecutiva no quiso ingresar el reclamo ni tampoco quiso ingresar un (auto)reclamo contra ella por no querer ingresar el primer reclamo), me insisitio hasta el cansancio que “así” era el sistema y que no era culpa de ellos que uno no se informara: ¡Pero si la información que ellos me entregan esta mala, o por ultimo confusa!
    Yo finalmente me siento un cliente defraudado, pensando seriamente en cambiarme de compañía móvil (después de ser cliente de Entel cerca de 8 o más años).
    Igual daré la pelea para recuperar esa plata… no es mucho, pero putas que me da rabia estas empresas abusadoras.
    Aquí mismo comentaré como me va.

    Tags para google: entelpcs, wap, estafa, abuso, robo, negligencia, desinformacion, mala atención.

    RPC es el acrónimo de Remote Procedure Call. Básicamente es la ejecución de código en una máquina distinta a la local. Se supone que estas cosas yo las debi haber visto en el ramo de Redes Computacionales, pero bueh… La cosa es que estas cosas las llegué a ver en el Taller de Sistemas Distribuidos.
    En los siguientes videos, se encuentra un tutorial para la creacion y ejecución de un código bastante sencillo en una máquina remota. Puntualmente es la suma de 2 números. Por debajo pasan varias cosas interesantes, como la representación que hacen de los valores las máquina que ejecuta la acción y quien lo solicita.
    Menos blabla y el video.

    Tags: rpc, ubuntu, linux, portmap, rpcgen.
    (more…)

    El excelente servicio de correos de google hoy me presento unos problemas. No me dejaba ni enviar ni recibir ya sea usando el cliente web o mi cliente preferido, Evolution. Me rechazaba las contraseñas y desde la web me daba el error 501.
    Todo mal…
    Pasaron cerca de 4 horas… y realmente sentí angustia. Aunque sabia que no había nada importante en los mensajes… necesitaba saber que diablos había. Le debo haber dado retry varias veces en un minuto a la espera de que el servicio se reestableciera. Me asombró la angustia…
    ¡Maldición! Necesito desconectarme.

    Extrañaba el look and feel Metal de Java en Netbeans. De hecho, lo que más me molestaba era el tamaño de los menús que por más que le decia a Gnome que los adaptara, Netbeans no los tomaba en cuenta. La opción para cambiar al laf Metal es ejecutar el netbeans con los siguientes parámetros:
    netbeans --fontsize 12 --laf javax.swing.plaf.metal.MetalLookAndFeel

    Si quiere que esos cambios queden en su perfil, debe editar el archivo netbeans.conf que esta en alguna parte y de alguna manera “particular”. Cuando lo averigüe, lo postearé acá… para que tampoco se me olvide.

    Hace unos días un vendedor me engrupió con el “Producto Protegido“. Inscribí mi portátil y como el primer año es gratis, me pareció buena idea probarlo (aunque espero nunca tener que ocuparlo).
    El cuento es que en el stand donde inscribí mi notebook, no me entregaron password ni nada… me dijeron que me la iban a enviar vía correo electrónico… hasta ahí ningún problema.
    El problema esta en que hoy me enviaron la password (obviamente no es problema eso), el problema radica es que al tratar de cambiar la password por defecto (que era muy obvia, onda los primeros números del rut), quedaban en texto claro. Ni siquiera unos asteriscos… ni hablar de https.
    Menos cachara y una imagen después del salto.
    (more…)

    Mi mamá habitualmente por estas fechas ve 2 teleseries, la típica de la tarde y la de después de almuerzo con la que se engancho en las vacaciones. Como la primera la dan temprano y ella está en su trabajo a esas horas no la puede. Lo que hacíamos era programar el VHS y listo. Pero de un tiempo a la fecha el sintonizador de TV del VHS1 empezó a fallar al tratar de grabar Canal 13 (desde la antena, no hay tvcable acá). Aplicamos plan b con el VHS2… pero llevaba tanto tiempo sin ser ocupado, que se traba con las cintas.
    La angustia de mi mamá la llevó a querer comprarse otro equipo para poder grabar sus teleseries, así que rápidamente recorrí las tiendas virtuales de las casas comerciales típicas (Falabella, Almacenes Paris, Johnsons, Ripley, ABC y algún otro que se me escapa) y ninguno tenía dentro de sus listas el famoso equipito.
    Al parecer la tecnología dejo fuera nuevamente a mi mamá… aunque esta pensando seriamente en comprar un grabador de DVD’s.
    Alguno de mis visitantes… ¿tiene alguna recomendación?

    Los proveedores de acceso telefónico e Internet acá en la casa son Telefónica y Terra respectivamente. Hace cerca de 2 años tirados para los 3, se contrató un pack que consistía en minutos ilimitados hacia cualquier compañía en llamadas locales (acá hablamos lo suficiente como para justificar este plan) y un acceso a Internet de 400kbps de bajada y 128kbps de subida (velocidades más que aceptables para mi hermano y yo) por $30.900.-. No tengo quejas acerca del servicio… a lo más un par de días sin teléfono y/o acceso a Internet en todo este tiempo, nada que no se arregle con una llamada al soporte técnico.
    El resto de la historia después del salto.
    (more…)