Búscalo aquí:

Simulador de vuelo para FF.AA en Linux

A propósito del concurso "PREMIO EJÉRCITO DEL PERU, ESTÍMULO A LA INVESTIGACIÓN, DESARROLLO E INNOVACION EN CIENCIA Y TECNOLOGIA” - 2009; buscando en Google sobre aplicaciones militares que puedan dar algunas "luces" sobre qué es lo que necesita una Fuerza Militar encontré que la Fuerza Aérea australiana (ADP) ha presentado un simulador de vuelo basado en servidores AMD Opteron y gobernado por SUSE Linux, en el que ha invertido $1.7 millones en el desarrollo de este simulador de vuelo en Linux.

Concurso: Premio Ejército del Perú, estímulo a la Investigación, Desarrollo e Innovación en ciencia y Tecnología

Con la finalidad de incentivar la investigación, desarrollo e innovación en el personal militar y civil del Ejército Peruano en los campos de Ciencia y Tecnología así como de promover en los estudiantes universitarios el interés por la Investigación y Desarrollo (I+D) en Ciencia y Tecnología orientado a la creación de soluciones y propuestas para defensa y desarrollo del país es que se llevará a cabo el concurso: "PREMIO EJÉRCITO DEL PERU, ESTÍMULO A LA INVESTIGACIÓN, DESARROLLO E INNOVACION EN CIENCIA Y TECNOLOGIA” - 2009; en este concurso, pùeden participar diferentes estudiantes y/o profesionales de las diferentes disciplinas del conocimiento, con la única condición de que apliquen sus conocimientos a brindar soluciones a los problemas y/o necesidades del Ejército, con especial atención al desarrollo tecnológico, y de esa manera contribuir a disminuir la dependencia tecnológica.

POSCOMP 2009 en Trujillo: Examen para Becas Integrales en estudios de Ciencias de la Computación‏

POSCOMP es un examen creado en Brasil para evaluar conocimientos en el área de computación. La gran mayoría de programas de Pos-Graduación en Brasil, utilizan este examen en sus procesos de selección de candidatos para maestría y doctorado. Por una iniciativa conjunta de la Sociedad Brasilera de Computación (SBC) y la Sociedad Peruana de Computación (SPC), este examen también puede ser hecho en Perú desde el año 2006. Y este año 2009, con el apoyo de la Sociedad de Estudiantes de Ciencia de la Computación (SECC) se realizará en la ciudad de Trujillo.

La Sociedad de Estudiantes de Ciencia de la Computación (SECC) hace presente el presente comunicado a todos los estudiantes de la Escuela de Informática que deseen realizar una Maestría en Ciencias de la Computación.

INSCRIPCIONES (Importante)

Periodo de inscripciones: 28 de Julio a 31 de Agosto
Estamos a una semana del cierre de la inscripciones, así que esta se tiene que realizarse lo antes posible.
Para poder inscribirse, estos son los pasos:
http://eventos.seccperu.org/poscomp2009/inscripcion.php
Para cualquier consulta, enviar un mensaje al correo poscomp.tru@seccperu.org
O también comunicarse al número +51-44-948851999

FECHA Y LUGAR DEL EXAMEN

Realización del examen: 27 de Septiembre
Local del examen: PERU - Trujillo - Universidad Privada Antenor Orrego
Horario del examen: 07:00 a 11:00 ( GMT-5, horario de Perú)
La duración del examen será de 4 horas, siendo realizado simultaneamente en todos los locales.
Estas fechas son independientes de las inscripciones en los diversos programas de pos graduación.

ESTRUCTURA DEL EXAMEN
En el 2009 el examen tendrá 70 preguntas de opción multiple divididas en tres partes:
  • Matemática (20 preguntas)
  • Fundamentos de Computación (30 preguntas)
  • Tecnología de Computación (20 preguntas)


Sin duda alguna que esta es una gran oportunidad para todos aquellos que estan en búsqueda de una oportunidad para lograr una beca de estudios y realizar una Maestría en Ciencias de la Computación.

Mayor Información

Visite la web donde está toda la información relacionado al POSCOMP: http://eventos.seccperu.org/poscomp2009/


Quieres leer más post como éste???...suscribete aquí!!!

Uso de Clave Foránea en JPQL: Inner Join en JPA

Cuando trabajamos sobre Bases de Datos relacionales, es normal que tengamos que manejar claves foráneas, ya que estas nos facilitan enormemente el trabajo. En el caso de la imagen que muestro, un elemento de la tabla fid_trabajador usa como clave principal a la clave foránea que hereda de fid_persona_empresa. En este post se mostrará como puedo realizar una consulta JPQL (Java Persistence Query Language) que me permita acceder a los datos almacenados en fid_persona_empresa usando la clave foránea que fid_trabajador usa, de manera más precisa, usaremos un inner join en JPA para resolver este problema.

Al mapear las tablas de una Base de Datos usando algún ORM como TopLink Essentials o Hibernate (entre otros) notaremos que, en las clases creadas para el ejemplo de la imagen mostrada, se obtendra un mapeo similar a esto:

Para FidPersonaEmpresa:

public class FidPersonaEmpresa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "nombres", length = 255)
private String nombres;
.
.
.
@OneToOne(cascade = CascadeType.ALL, mappedBy = "fidPersonaEmpresa")
private FidTrabajador fidTrabajador;
.
.
.
}
Para FidTrabajador:

public class FidTrabajador implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "fid_persona_empresa_id", nullable = false)
private Integer fidPersonaEmpresaId;
.
.
.
@JoinColumn(name="fid_persona_empresa_id",referencedColumnName = "id",
nullable = false, insertable = false, updatable = false)
@OneToOne(optional = false)
private FidPersonaEmpresa fidPersonaEmpresa;
.
.
.
}

El mapeo genera automaticamente variables para el acceso a ambas tablas, este acceso nos servirá como "puente" para poder hacer nuestra consulta usando un conocido INNER JOIN de una SQL tradicional pero con la sintaxis de JPQL.

De esta manera suponiendo que necesito recuperar todos los trabajadores cuyos nombres contengan la palabra "gonzales", me veré en la necesidad de buscar todos los elementos FidPersonaEmpresa que tengan por nombre "gonzales" y que a su vez se encuentren en FidTrabajador, para esto, la JPQL que hace uso de la clave foránea mediante el inner join sería:

String jpql = "SELECT t FROM FidTrabajador t JOIN
t.fidPersonaEmpresa p WHERE p.nombres like :nombres
and p.id = t.fidPersonaEmpresaId";

De manera similar, cuando quiero recuperar los datos personales de todos los trabajadores que tengan por nombre "gonzales" , la JPQL que hace uso de la clave foránea mediante el inner join sería:

SELECT p FROM FidPersonaEmpresa p JOIN p.fidTrabajador t  WHERE
p.nombres like :nombres and p.id = t.fidPersonaEmpresaId


De esa manera logramos acceder a las tablas que deseamos y hacer las operaciones necesarias para cumplir nuestra con nuestra consulta.

Espero les sea de utilidad, saludos.


Quieres leer más post como éste???...suscribete aquí!!!

Trabajar con JPA (Java Persistence API ) en NetBeans

Cuando tienes planeado realizar un proyecto en Java en el cual tengas que trabajar con Bases de Datos, lo que primero se te viene a la mente es JDBC. Sin embargo, esa no es la única opción, puesto que Java provee su Java Persistence API - JPA - la cual se encarga de crear el modelo de tu base de datos abstrayendo por tí la capa de conexión a datos y dejándote a tí, la tarea de enfocarte en la capa de la lógica del negocio, es decir, te dedicarás únicamente a programar el código funcional!!! y esto lo puedes aplicar tanto en aplicaciones de escritorio como en aplicaciones web. sin dudas que a mi me ha traido bastantes beneficios. En este post mostraré de manera breve y concisa algunos alcances sobre el trabajo con JPA.

Realizaremos nuestro trabajo usando el IDE NetBeans y utilizando una Base de Datos en MySQL, aunque esto es independiente y se puede trabajar con cualquier IDE y motor de Base de Datos.

Primero que nada debemos partir teniendo una Base de Datos, sobre la cual realizaremos el trabajo, una vez que tenemos una, lo que debemos hacer es conectar nuestra base de datos con el IDE. En este caso, trabajaremos sobre una Base de Datos llamada fid.


Ahora, organizaremos nuestro proyecto en 3 capas: Entidades, dónde ubicaremos las entidades de cada clase correspondiente a cada tabla de la base de datos; Componentes, dónde ubicaremos el código de las funciones que trabajarán sobre las entidades; y Vista, dónde colocaremos nuestras interfaces de usuario y haremos las llamadas respectivas a nuestras funciones de la capa de componentes para que respondan a los requerimientos que el usuario final desee .

De esta manera, ahora podemos trabajar primero sobre nuestra capa de Entidades, para lo cual, crearemos un nuevo proyecto de categoria: Java y tipo: Biblioteca de Clases Java. A esta librería la llamamos fid.be. Creamos un paquete denominado entidades y dentro de él crearemos nuestras clases de entidad de la siguiente manera:


Despues de esto, nos aparecerá una ventana, en la cual, elegiremos la Base de Datos sobre la cual trabajaremos. Una vez hecho esto, nos apareceran todas las tablas disponibles pertenecientes a dicha Base de Datos, deberemos elegir aquellas con las deseemos trabajar (generalmente todas).


Al continuar, nos aparecerá una ventana como la que sigue.

Como pueden notar, nos hace falta crear una unidad de persistencia, esto es el paso más importante. Hacemos clic sobre el boton correspondiente, ante lo cual aparecerá una ventana para crear la correspondiente unidad de persistencias para el proyecto, a la cual denominaremos fid.bePU (nombre por defecto), además usaremos el ORM TopLink como nuestra biblioteca de persistencias (aunque puedes elegir la que más te guste). Además en las opciones de mapeo, usaremos java.util.list como nuestro tipo de colección de datos; y listo!!! Ahora tenemos nuestras clases de persistencias, además s eha creado un par de archivos muy importante, persistence.xml y fid_be.dbschema, dales un vistazo por ti mismo para que notes la información que almacenan.


Ahora pasamos a nuestra capa de Componentes, al igual que para nuestra anterior capa, creamos un nuevo proyecto de tipo libreria de clases, lo llamamos fid.bc y adjuntamos nuestra libería anteriormente creada (fid.be) y TopLink Essentials como librerias de fid.bc. Claro, en esta capa somos libres de hacer lo que realmente queramos, ya que podemos interactuar directamente con nuestra Base de Datos de una manera más transparente. En la siguiente imagen se muestra el entorno de la capa de Componentes.

Se ha construido la clase Acciones, en donde se pueden realizar las funciones que deseemos sobre nuestra capa de Entidades. En el ejemplo que se visualiza el método insertarPersona() que utiliza las funciones de persistencias (JPA) para crear un nuevo objeto e insertarlo en la base de datos.

Finalmente abordamos nuestra capa de Vista, creamos un nuevo proyecto, esta vez como lo deseemos, ya sea una aplicación web o de escritorio; le colocamos el nombre fid.gui. Una vez creado, agregamos como librerias los paquetes de nuestras 2 capas antes creadas, es decir fid.be y fid.bc. Acá deberemos ser capaces de desplegar nuestros requerimientos acerca de las vistas. En este caso, nuestra capa de vista estará representada por una solitaria clase main en dónde se hace el llamado respectivo a la función creada en la capa de Componentes.


Al ejecutar el proyecto, debería de quedar insertado el nuevo objeto en la tabla correspondiente de la Base de Datos. Como habrán podido notar no hemos utilizado el método insert (de manera directa) y de la misma manera puedes hacer reportes (select) o eliminar datos (delete) y todo tipo de funcionalidad sobre tu Base de Datos usando JPA. Dale una revisada a la documentación de esta API.

Espero les sea de utilidad, saludos.

Quieres leer más post como éste???...suscribete aquí!!!

Problemas de seguridad en las Mac de Apple

Un experto en seguridad de Mac descubrió una técnica que podrían utilizar los hackers para tomar el control de las computadoras fabricadas por Apple y tener accedo libre no autorizado a los datos que están cifrados y se supone existen para brindar seguridad...es decir, las Mac serían tan vulnerables como lo son las PC's que usan Windows!!!.

El renombrado investigador Dino Dai Zovi presentó el defecto del software en la conferencia de seguridad Black Hat en Las Vegas, EE.UU., uno de los mayores encuentros del mundo sobre seguridad informática celebrada con el objetivo de intercambiar información sobre amenazas en Internet.

Los ataques contra las computadoras de Apple son extremadamente raros, pero expertos en seguridad señalan que eso cambiará a medida que las Mac vayan ganando cuota de mercado frente a las PC que usan Windows.

En el último año se han identificado al menos tres virus que afectan a las Mac. El más sofisticado de ellos se extiende a través de versiones pirateadas del programa iWorks de Apple y permite a los ciberdelincuentes tomar el control del equipo infectado.

Otro virus es el OSXPuper, que se transmite a través de páginas infectadas que dirigen a los usuarios a supuestas descargas de un reproductor de video, pero resulta ser un software malicioso.

Dai Zovi, coautor de “The Mac Hacker’s Handbook”, dijo que una vez que los hackers empiecen a poner recursos sustanciosos en atacar las Mac, serán al menos tan vulnerables como las computadoras con sistema Windows.



Fuente: el comercio


Quieres leer más post como éste???...suscribete aquí!!!

Setear un valor heredado desde Symfony

Cuando se trabaja con Base de Datos, la propiedad de generalización es comunmente usado puesto que, somos conscientes que al momento de programar, podremos trabajar esto mediante herencia, y más aún si trabajamos con algún ORM que nos permita el trabajo desde programación orientada a objetos encapsulándonos el trabajo sobre los campos de las tablas de una base de datos. Pero, como hacemos que un objeto herede una clave desde su padre (siendo esta la única clave de la clase hijo) de manera automática cuando trabajamaos desde Symfony?.

El caso descrito, se puede observar en la relación mostrada en la imagen superior: id_persona_empresa es padre de fid_trabajador, y esta tabla hija, hereda la clave fid_persona_empresa_id, que a su vez, es su clave única. Al trabajar en el framework Symfony, ocurría que, al crear el módulo de esta clase hija, al momento de intentar crear un nuevo elemento trabajador, en mi formulario de vista aparecían únicamente los siguientes campos:

Como podrán notar, hace falta la clave primaria fid_persona_empresa_id, la cual no se puede asignar automáticamente (pues ocurrirá una excepción ya que el ORM no sabrá que valor asignar a dicha clave). Esta clave debe ser colocada manualemnte (y es natural puesto que la idea es asignar un determinado rol de trabajador a una persona/empresa previamente creada). Si damos un vistazo a la clase BaseFidTrabajadorForm en los formularios, observaremos:
  1. public function setup()
  2. {
  3. $this->setWidgets(array(
  4. 'fid_persona_empresa_id' = > new sfWidgetFormInputHidden(),
  5. 'fid_rol_trabajador_id' => new sfWidgetFormPropelChoice(array('model' =>
  6. 'FidRolTrabajador', 'add_empty' => true)),
  7. 'foto' => new sfWidgetFormInput(),
  8. 'fechaIngreso' => new sfWidgetFormDateTime(),
  9. ));

El parámetro que corresponde a la clave primaria fid_persona_empresa_id se encuentra oculta, entonces deberemos de quitar esa linea y sustituirla por:

  1. 'fid_persona_empresa_id' => new sfWidgetFormPropelChoice(array('model'
  2. => 'FidPersonaEmpresa', 'add_empty' => true)),
Pero eso no es todo, con esto solamente lograremos visualizar en nuestro formulario de vista del módulo trabajador, la clave que necesitamos, pero ahora nos hace falta leer el valor que se leerá y setearlo (asignarlo) como corresponda, para eso, en el formulario trabajador, es decir, en la clase FidTrabajadorForm agregamos lo siguiente:

  1. public function configure()
  2. {
  3. //obtengo el request del contexto
  4. $request = sfContext::getInstance()-> getRequest();
  5. // y lo seteo
  6. $this-> getObject()-> setPrimaryKey($request->getParameter
  7. ('fid_persona_empresa_id'));
  8. }

Con eso, todo esta listo, ahora probamos y vemos los resultados:


Y listo!! saludos



Fuente: juaninf's Blog


Quieres leer más post como éste???...suscribete aquí!!!

Crackean Windows 7

Así como lo leen, lo nuevo de Microsoft, Windows 7 aún no sale a la venta al mercado y ya ha sido crackeado, es decir, es posible instalar Windows 7 en las PC personales con todas sus claves de activación, evadiendo el respectivo pago. ¿cómo es posible esto?...pregunta misteriosa que tal vez nadie llegue a responder.

Los crackers se han vuelto los peores enemigos de Microsoft, hace tan solo una semana que la multimillonaria compañía Microsoft entregó la versión final a la compañia LENOVO y seguro que, debido a un descuido de la misma, ya algunos usuarios lo han puesto a correr a toda capacidad.


Este crakeo no es tan facil de realizar, es decir no es para todo publico pues hay que comenzar con hacer modificaciones en la BIOS para poder iniciar con el crakeo. Lo difícil es lograr conseguir las claves para autenticar la copia del sistema, pero esto ya se obtuvo de una de las licencias creadas para fabricantes de Lenovo.


Fuente: EngadgetDR


Quieres leer más post como éste???...suscribete aquí!!!

Ejecutar las instrucciones de un compilador [código]

Todo compilador, cumple con la revisión lexica, sintáctica y semántica, cuando una entrda ha pasado satisfactoriamente todas estas fases, es momento de realizar la ejecución respectiva para obtener el resultado deseado. En el caso de nuestro mini compilador, esta tarea es más sencilla por el hecho de que solo ejecutaremos operaciones aritméticas y trigonométricas sencillas.

De esta manera, dado que nuestro mini compilador scheme almacena todas las operaciones a realizar en una pila, manteniendo en la cima de ella, a las operaciones que se deben de realizar primero, estas iran tomaándose y ejecutándose según corresponda.

Pueden descargar el código fuente del paquete Ejecutar escrito en Java, en el que se definen los métodos necesarios que hacen posible la ejecución de una instrucción dada para el mini compilador scheme.

También pueden ver:

* Clase principal : Aquí ubicamos el main del programa, por donde ingresan las instrucciones y se muestran el resultado obtenido. Debe estar ubicada en el paquete Principal.

* Analizador Léxico

* Tipos de Datos

* Analizador Sintáctico

* Cómo ejecutar las instrucciones de un compilador

Espero les sea de utilidad, saludos.


Quieres leer más post como éste???...suscribete aquí!!!

Tipos de Datos en un Compilador [código]

Definir los tipos de datos adecuadamente es importante en todo compilador, siempre y cuando, el lenguaje que se desea implementar, sea fuertemente tipado. En Scheme no es la excepción y usa diferentes tipos de datos, entre los que destacan los enteros, racionales, reales, cadenas, listas asociativas, entre otras. Por ese motivo es que nosotros también deberemos tratar cuidadosamente el trabajo con los tipos de datos.

Para nuestro mini compilador scheme trabajaremos con el tipo de datos ENTERO. Esto se hace necesario, puesto que, al ingresar una instrucción, esta es simplemente una cadena de caracteres, será nuestro compilador quién le asigne un determinado token (por ejemplo, el token numero), una vez esto, nuestro compilador, al momento de realizar la ejecución de la tarea asignada (en nuestro caso operaciones aritméticas) tendrá en cuenta cuales son válidas para este tipo de datos actuando de la manera como se le instruya.

El código fuente del paquete Tipos escrito en Java, define las clases necesarias para el trabajo con tipos de datos numéricos (enteros) para el mini compilador scheme.

También pueden ver:

* Clase principal : Aquí ubicamos el main del programa, por donde ingresan las instrucciones y se muestran el resultado obtenido. Debe estar ubicada en el paquete Principal.

* Analizador Léxico

* Tipos de Datos

* Analizador Sintáctico

* Cómo ejecutar las instrucciones de un compilador

Espero les sea de utilidad, saludos.

Quieres leer más post como éste???...suscribete aquí!!!

Analizador Sintáctico de un Compilador [código]

El analizador sintáctico o parser es otra de las partes más importantes de todo compilador y su tarea es la de verificar que los tokens que recibe el analizador léxico (scanner) estén debidamente combinados de tal manera que cumplan con las reglas sintácticas del lenguaje fuente, en este caso, que cubra la sintáxis usada por el lenguaje de programación Scheme.

Tal como había mencionado, usaremos la gramática libre de contexto que usa Scheme para nuestro propio parser, y de esta manera lograr que nuesro mini compilador scheme acepte únicamente las instrucciones que cubran este requirimiento.

En esta parte del compilador, es muy importante el manejo de errores, se debería tener en cuenta una política de trabajo cuando suceda que una instrucción ingresada no esta sintácticamente bien formada. Usualmente se implementan tablas de errores para el manejo más ordenado de los mismos. A nivel de programación, y por el caso de tratarse de un simulador de compilador, se podría manejar mediante el manejo de Excepciones y lanzamientos (Throw), sin embargo, en el código que se presentará, se hace un corte del desarrollo del programa y se muestra el respectivo mensaje de error.


Pueden descargar el código fuente del paquete Sintáctico escrito en Java, en el que se definen las clases necesarias que ponen en marcha el analizador sintáctico (parser) del mini compilador scheme.


También pueden ver:

* Clase principal : Aquí ubicamos el main del programa, por donde ingresan las instrucciones y se muestran el resultado obtenido. Debe estar ubicada en el paquete Principal.

* Analizador Léxico

* Tipos de Datos

* Analizador Sintáctico

* Cómo ejecutar las instrucciones de un compilador

Espero les sea de utilidad, saludos.

Quieres leer más post como éste???...suscribete aquí!!!

Analizador Léxico de un Compilador [código]

El analizador léxico es una de las partes más importantes de todo compilador y su tarea es la de revisar que la instrucción ingresada, cumpla estrictamente las reglas léxicas establecidas y use únicamente los elementos permitidos y aceptados por el compilador.

Para el caso del mini compilador scheme, se cuenta con un analizador léxico que crea tokens de una secuencia de caracteres de entrada: +,-,*,/,(,)[a-z, A-Z, 0-9] y también palabras de lenguaje (palabras reservadas): sqrt, abs, sin, cos, tan, asin, acos, atan, expt, log. El automáta finito determinista en el que se basa nuestro analizador léxico se muestra en la siguiente imagen.




Pueden descargar el código fuente del paquete Léxico escrito en Java, en el que se definen las clases necesarias que ponen en marcha el analizador léxico del mini compilador scheme.

También pueden ver:

* Clase principal : Aquí ubicamos el main del programa, por donde ingresan las instrucciones y se muestran el resultado obtenido. Debe estar ubicada en el paquete Principal.

* Analizador Léxico

* Tipos de Datos

* Analizador Sintáctico

* Cómo ejecutar las instrucciones de un compilador

Espero les sea de utilidad, saludos.


Quieres leer más post como éste???...
suscribete aquí!!!

Mini Compilador de Expresiones Funcionales [código]


Muchos de nosotros hemos tenido la oportunidad de trabajar con la programación funcional, como la que se pone en marcha sobre Scheme y por tanto, nos habremos dado cuenta de que, programar en Scheme, requiere cierta capacidad de abstracción (y algo de práctica), sin embargo, los beneficios son bastantes, entre ellos, la posibilidad de resolver problemas complejos con programas cortos y elegantes. Hace algún tiempo, en un curso que llevé en la Universidad, nos dejaron como trabajo realizar un pequeño compilador en el que se pongan de manifiesto los dos elementos principales de estos: un analizador léxico y un analizador sintáctico, por lo que junto a mi grupo de trabajo, decidimos realizar un mini compilador Scheme.

Related Posts Plugin for WordPress, Blogger...