Iluminando los rincones del sin saber

Conocimientos liberados sólo para copiar y pegar, aprender y compartir es lo importante

Tip Java: commandLink dentro de un dataTable


Problema: Están trabajando con Java (JEE) y tecnologías basadas en el framework JavaServer Faces (En este caso estoy utilizando ICEFaces, pero la lógica es igual para RichFaces, PrimeFaces, etc) y en una tabla quieren acceder a un detalle por medio de un link a cada uno de los registros.

Solución: Del lado de la vista, dentro de la columna donde declaran el link deben de enviarle un parámetro al bean (pueden enviarle todos los parámetros que necesiten).

<ice:column>
  <ice:commandLink value="Ver Detalle" actionListener="#{BeanRespaldo.verDetalle}">
    <f:attribute name="id" value="#{instanciaTabla.Identificador}"/>
  </ice:commandLink>
</ice:column>

Del lado del bean para leer el parametro (“reglaSel”)

public void verDetalle(ActionEvent e) {
  String Identificador = e.getComponent().getAttributes().get("id").toString();
  //resto de la lógica del negocio
}

instanciaTabla es la variable con la que van a recorrer la lista con la que llenarían su tabla.  <ice:dataTable id=”tbl1″ value=”#{BeanRespaldo.tblDatos}” var=”instanciaTabla”>

Tip ubuntu


Si al tratar de compartir alguna carpeta en ubuntu (mi versión 10.10) les sale el siguiente error:

Ha ocurrido un error al ejecutar el proceso hijo «testparm» (No existe el fichero ó directorio)

Pueden solucionarlo con el siguiente comando en la consola:

sudo apt-get install samba-common-bin

Al parecer cuando ubuntu les instala los paquetes para la compartición de archivos (samba), olvida instalar el paquete anterior.

[off topic] Prueba de envio/recepción de mensaje


Este post es solo para saber si un msj enviado por diferentes medios de comunicación, puede llegar a transmitir su mensaje/idea/propósito.  El detalle de este estudio/experimento se revelaran en el siguiente post.

Gracias por participar/estar atento.

DataBase Link (DBLink) Oracle


Problema: Nos encontramos en un ambiente en donde hay varios esquemas de base de datos por la lógica del negocio (estructura funcional en sistemas demasiado grandes y complejos, o también por políticas de seguridad y mantenimiento de la información).  Estamos en un esquema pero necesitamos acceder a cierta información de otro esquema.

Solución: Podemos crear un sinónimo público de la tabla(s) a la que queremos acceder y utilizarla sin mayor, sin embargo si el esquema al que queremos acceder se encuentra en otro servidor de base de datos, podemos llegar por medio de un DBLink.

Como Crearlo

Se tienen que ejecutar instrucciones tanto de la BD origen (DBFuente) como del lado de la BD en donde será consumida la información (DBDestino).

De lado de DBFuente tenemos que hacer lo siguiente:

  • Crear un usuario
  • Darle permisos a las tablas (otros recursos) a los que queremos a acceder
  • (Opcional, pero buena practica) Crear un rol, y asignarle los permisos a este, y luego asignarle el usuario a este rol, de esta manera es mas fácil su mantenimiento.

CREATE USER usuarioDBLink IDENTIFIED BY passDBLink;
GRANT CONNECT TO usuarioDBLink;
GRANT SELECT ON tablaAConsultar TO usuarioDBLink;

De lado de DBDestino tenemos que hacer lo siguiente:

  • Crear un DBlink.

CREATE PUBLIC DATABASE LINK nombreDBLink
CONNECT TO usuarioDBLink
IDENTIFIED BY passDBLink
USING ‘SID_DBFuente’;   — Este es el SID (Service ID) ubicado en el tsnames (ORACLE_HOME\network\admin\tnsnames.ora) por el cual se conecta a la base de datos fuente.

Consumiendo el DBLink

Para consumir el DBLink basta lo siguiente

SELECT * FROM tablaAConsultar@nombreDBLink;

Configurando copiar y pegar en terminal de linux


Si estas empezando a usar la consola/terminal de linux, o si la usas habitualmente pero no tienes configurado los clásicos “Ctrl+C” y “Ctrl+V” para copiar y pegar respectivamente en la consola, solo tienes que abrir una consola y dirigirte a Editar -> Combinaciones de Teclas, allí encontraras los accesos vía teclado, y ya solo es de cambiar la combinación de teclas para copiar y pegar, por la que mas te guste.

La consola de linux por defecto para salir/terminar instrucciones tiene la combinación “Ctrl+C”, entonces al definir copiar como “Ctrl+C” se creara un conflicto y no podrás terminar comandos como “top” (Administrador de tareas), pero no te preocupes ya que para finalizar instrucciones se puede utilizar también “Ctrl+\” y no pasa nada.

Agentes Inteligentes


La semana pasada estuve hablando acerca de agentes inteligentes en una clase de la u, en la cual inicie con las siguientes preguntas:

  • Que es la Inteligencia Artificial?
  • Las maquinas pueden aprender y tomar decisiones por si solas?
  • Las maquinas pueden tener y mostrar emociones?

Las cuales generaron opiniones muy interesantes, mas adelante abordare dichos temas en el blog ya que esos temas no forman parte de la presentación, solo sirvieron de introducción para el contexto de agentes inteligentes, por el momento solo les dejo la presentación que utilice para dicha clase.

Hilos de ejecución


Este tema trata conceptos básicos como lo que son los hilos de ejecución, que tipos existen y las diferencias entre estos, así como también los diferentes estados de los procesos según los hilos que este tiene, ademas de unos ejemplos de uso practico de los hilos. La importancia de este tema, es poder conocerlos y entenderlos para poder crear aplicaciones a partir de hilos y así aprovechar mejor los recursos de nuestra maquina por medio de aplicaciones que se beneficien del paralelismo.

Concurrencia de procesos


Este tema consiste en los conceptos de la concurrencia de procesos, región critica, exclusión mutua, ademas de las soluciones que podemos encontrar para garantizar la exclusión mutua, entre procesos concurrentes, como lo son: Las soluciones por software, hardware y por medio de soporte al sistema operativo; Se tratara a grandes rasgos lo que son los algoritmos de Dekker (soluciones por software) y un resumen de los mismos para poder memorizarlos.

Modelo de procesos


Esta es una clase que hice para el curso de Sistemas Operativos, en la cual se tratan temas básicos como que son los programas, procesos, hilos, y en que se diferencian estos. Ademas de información acerca del modelo de procesos, y como es que le sirve al sistema operativo el manejo de esto para la asignación de recursos.

Si quieren ver la presentación acá la pueden ver ya que la he subido a scribd, igual si la quieren bajar y utilizar para dar una clase, no hay ningún problema ya que esta liberada bajo una licencia CC.

Acá también dejo el contenido del documento, pero no en formato de presentación, sino en formato de recopilación de información, de esta manera es mas fácil y rápido de leer.

Estas son las referencias, utilizadas:

http://es.wikipedia.org/wiki/Programa_(computaci%C3%B3n)
http://es.wikipedia.org/wiki/Software_de_sistema
http://es.wikipedia.org/wiki/Software_de_aplicaci%C3%B3n
http://so-wiki.wetpaint.com/page/Procesos
http://ci.ldc.usb.ve/~spd/Docencia/ci-3821/Tema3/node1.html
http://so-wiki.wetpaint.com/page/BCP%2C+Cambios+e+Interrupciones
http://so-wiki.wetpaint.com/page/Estados+de+procesos [Recomendado para saber más de los diferentes modelos de estados]
http://ci.ldc.usb.ve/~spd/Docencia/ci-3821/Tema3/node2.html [Recomendado para saber mas acerca del modelo de 7 estados de Unix, donde ademas se explica algunas razones para suspender un proceso]

Video de presentacion del sistema DiagNes


Para aquellos que se pregunten que es el Sistema DiagNes, fue el nombre que le puse a mi proyecto final de carrera, en el que tuve que crear una presentación de lo que se trata el mismo, y aprovechando este espacio les pongo el vídeo, donde cualquier idea, sugerencia o critica, es bienvenida.  Lo relacionado con este proyecto, lo iré publicando por acá y en mi canal de youtube [donde también pueden encontrar otras cosas que he hecho].