Mostrando las entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando las entradas con la etiqueta programación. Mostrar todas las entradas

jueves, 20 de septiembre de 2012

PostgreSql: Herencia

Herencia es un concepto de POO
(Progranación Orientada a Objetos) sin embargo, en base de datos Postgres ya es posible la herencia de manera transparente al nivel de visión de base de datos.

Para aplicar herencia en Postgres, basta con añadir la sentencia INHERITS (NOMBRE_TABLA) después del CREATE TABLE.

Por ejemplo:

CREATE TABLE cities (
Name text,
Population float,
Altitude int
);

CREATE TABLE capitals(
State char(2)
) INHERITS (cities);

Con las sentencias anteriores, como resultado tendríamos dos tablas (cities y capitals) sin embargo, capitals tendría el atributo state además de los campos que hereda de cities.

Para consultar la tabla cities y todos los campos que hereda, basta con utilizar el símbolo (*), por ejemplo:

SELECT c.name, c.altitude
FROM cities* c
WHERE c.altitude > 500;

La consulta anterior, busca dentro de cities y dentro de capitals, siempre y cuando cumplan con el citerio c.altitude > 500.

Postgresql: Versión del servidor

Para consultar la versión del servidor postgre sql instalada, basta con ejecutar la instrucción:
SELECT VERSION();

martes, 28 de agosto de 2012

Como ejecutar un jar desde un Applet de java

Actualmente si queremos incluir un jar ejecutable incrustado en nuestro sitio web, html provee la etiqueta applet.

Sin embargo, Java posee políticas de seguridad para que no se ejecute código malicioso en la máquina del cliente y bloquea la ejecución de cualquier applet directamente desde el sitio web.

Para que un archivo jar ejecutable pueda ser ejecutado como applet éste debe estar firmado.

Para firmar un applet, debemos de utilizar keytool y jarsigner, los cuales se localizan en en directorio local de java jre.

Primero, se debe generar un certificado para firmar el jar.
>keytool -genkey -alias [NombreDelCertificado] -validity [#TiempoDeExpiración] -v
Ejemplo: keytool -genkey -alias crtificado1 -validity 600 -v

Una vez ejecutado el keytool, se debera proporcionar un password del almacen de claves y una serie de preguntas para completar el proceso de generacion del certificado. Una vez creado, dicho certificado será util para firmar archivos jar.

>jarsigner [NombreDelJar] [NombreDelCertificado] -verbose
Ejemplo: jarsigner archivo.jar certificado1 -verbose

Finalizado lo anterior, el archivo jar ejecutable está listo para ser ejecutado desde un sitio web mediante la etiqueta applet.

Ing. Cruz

lunes, 9 de enero de 2012

JBoss

JBOSS

JBoss es un servidor de aplicaciones J2EE de código abierto implementado en Java puro. Al estar basado en Java, JBoss puede ser utilizado en cualquier sistema operativo para el que esté disponible Java. Los principales desarrolladores trabajan para una empresa de servicios, JBoss Inc., adquirida por Red Hat en abril del 2006, fundada por Marc Fleury, el creador de la primera versión de JBoss. El proyecto está apoyado por una red mundial de colaboradores. Los ingresos de la empresa están basados en un modelo de negocio de servicios.

JBoss implementa todo el paquete de servicios de J2EE.

Servidor de aplicaciones JBoss

JBoss AS es el primer servidor de aplicaciones de código abierto, preparado para la producción y certificado J2EE 1.4, disponible en el mercado, ofreciendo una plataforma de alto rendimiento para aplicaciones de e-business. Combinando una arquitectura orientada a servicios revolucionaria con una licencia de código abierto, JBoss AS puede ser descargado, utilizado, incrustado y distribuido sin restricciones por la licencia. Por este motivo es la plataforma más popular de middleware para desarrolladores, vendedores independientes de software y, también, para grandes empresas.

Las características destacadas de JBoss incluyen :

Producto de licencia de código abierto sin coste adicional.
Cumple los estándares.
Confiable a nivel de empresa
Incrustable, orientado a arquitectura de servicios.
Flexibilidad consistente
Servicios del middleware para cualquier objeto de Java
Ayuda profesional 24x7 de la fuente
Soporte completo para JMX

EJB 3.0

Implementa la especificación inicial de EJB 3.0.

JBoss AOP

JBoss AOP está orientado a trabajar con Programación Orientada a Aspectos. Esto permitirá añadir fácilmente servicios empresariales (transacciones, seguridad, persistencia) a clases Java simples.

Hibernate

Hibernate es un servicio de persistencia objeto/relaciones y consultas para Java. Hibernate facilita a los desarrolladores crear las clases de persistencia utilizando el lenguaje Java - incluyendo la asociación, herencia, polimorfismo y composición y el entorno de colecciones Java.

JBoss Cache

JBoss Cache es un producto diseñado para almacenar en caché los objetos Java más frecuentemente accedidos de manera que aumente de forma notable el rendimiento de aplicaciones e-bussines. Eliminando accesos innecesarios a la base de datos, JBoss Cache reduce el tráfico de red e incrementa la escalabilidad de las aplicaciones.

JBoss Cache proporciona dos APIs de caché que se ajustan a nuestras necesidades. La API de JBossCache ofrece una caché tradicional basada en nodos y estructurada en árbol, y la API JBossCacheAOP, edificada sobre la API de JBossCache, proporciona capacidad para la replicación de objetos Java de grano fino, con el máximo beneficio del rendimiento.


JBoss IDE

Brinda una IDE Eclipse para el JBoss AS. De esta forma la depuración y otras tareas asociadas al desarrollo de aplicaciones puede ser realizadas desde el entorno de Eclipse.

JBoss jBPM

Gestor de procesos de negocio, también denominado "WorkFlow".

jBPM es una plataforma para lenguajes de procesos ejecutables, cubriendo desde gestión de procesos de negocio (BPM) bajo workflow hasta orquestación de servicios. Actualmente jBPM soporta tres lenguajes de procesos, cada uno enfocado a un ambiente y funcionalidad especifica:

jPDL
BPEL
Pageflow

jBPM soporta a estos lenguajes de procesos sobre una sola tecnología: Máquina Virtual de Procesos(PVM)

JBoss Portal

Es una plataforma de código abierto para albergar y servir una interfaz de portales Web, publicando y gestionando el contenido así como adaptando el aspecto de la presentación.

Como características principales categorizadas cabe destacar:

Tecnología y arquitectura

JEMS: hace uso del potencial de JBoss Enterprise Middleware Services : JBoss Application Server, * JBoss Cache, Jgroups e Hibernate.
DB Agnóstico: funciona con cualquier SGBD soportado por Hibernate
SSO/LDAP: hace uso de las soluciones de single sign on (SSO) de Tomcat y JBoss
Autenticación JAAS: módulos de autenticación adaptables vía JAAS
Caché: utiliza cacheado en la capa de visualización para mejor rendimiento
Clusterizable: soporte de Cluster que permite que un portal pueda ser desplegado en varias instancias
Hot-Deployment: hace uso de las características de autodespliegue dinámico incluido en JBoss
Instalador SAR: instalación basada en web que hace que la instalación y configuración inicial sea muy sencilla.

Estándares soportados

Portlet Specification and API 1.0 (JSR-168)
Content Repository for Java Technology API (JSR-170)
Java Server Faces 1.2 (JSR-252)
Java Management Extensión (JMX) 1.2
Compatibilidad 100% con J2EE 1.4 al utilizar JBoss AS

Contenedor de Portales

Múltiples Instancias de Portales: habilidad para ejecutar múltiples portales desplegados en un único contenedor.
IPC (Inter-Portlet Communication): la API habilita a los portlets crear enlaces a otros objetos como páginas, portales o ventanas.
Dynamicity: permite a administradores y usuarios crear y eliminar objetos como portlets, páginas, portales, temas y composición en tiempo de ejecución.
Internacionalización: permite utilizar recursos de internacionalización para cada portlet.
Servicios empotrables: la autenticación realizada por el contenedor de servlets y JAAS posibilita cambiar el esquema de autenticación.
Arquitectura basada en Páginas: permite for the grouping/division of portlets on a per-page basis.
Soporte de Frameworks existentes: los Portlets pueden utilizar Struts, Spring MVC, Sun JSF-RI, AJAX o MyFaces.

Temas y Layouts

Temas y Layouts fácilmente intercambiables: los temas y layouts nuevos que contienen imágenes se pueden desplegar en ficheros WAR.
API Flexible: la API de Temas y Layout están diseñados para separar la lógica de negocio de la capa de presentación.
Estrategia de layout por página: a cada página se le puede asignar layouts distintos.

Funcionalidades de Usuarios y Grupos

Registro y validación de usuarios: parámetros configurables del registro permite la validación de usuarios vía email previa a la activación.
Acceso de usuarios: hace uso de la autenticación del contenedor de servlets.
Crear/Modificar usuarios: habilita a los administradores crear/modificar perfiles de usuarios.
Crear/Modificar roles: habilita a los administradores crear/modificar roles.
Asignación de roles: habilita a los administradores asignar roles a los usuarios.

Gestión de Permisos

API extensible de permisos: permite asignar permisos de acceso a portlets basados en la definición de roles.
Interfaz de administración: asignación de permisos a roles en cualquier momento para portlets, páginas o instancias de portal desplegados.

Sistema de gestión de contenidos

Compatible JCR: el CMS utiliza Apache Jackrabbit, una implementación en código abierto del estándar Java Content Repository API.
Soporte de almacenamiento en SGBD o en el sistema de ficheros.
Soporte externo de contenidos tipo Blob (binarios): se puede configurar el almacenamiento en el sistema de ficheros de contenido binario de gran tamaño y los nodos con las referencias y propiedades residan en el SGBD.
Control de versiones: Todo contenido modificado/creado es autoversionado con el historial de cambios, que pueden ser revisados en cualquier momento.
Contenidos mostrados en URLs amigables para los motores de búsqueda: http://yourdomain/portal/content/index.html (sin incluir las acciones de los portlets)
URLs del portal sencillas: mostrar descarga de binarios con URLs fáciles de recordar. (http://domain/files/products.pdf)
Soporte de múltiples instancias de Portlets HTML: permite que instancias extra de contenido estático del CMS sean publicadas en ventanas distintas.
Soporte de directorios: crear, mover, eliminar, copiar y subir árboles completos de directorios.
Funciones de Ficheros: crear, mover, copiar, cargar y eliminar ficheros.
Explorador de directorios embebido: cuando se copia, mueve, elimina o se crean nuevos ficheros, los administradores pueden simplemente navegar por el árbol de directorios hasta encontrar la colección en la que se realizará la acción.
Arquitectura fácil de usar: todas las acciones que se pueden realizar sobre ficheros pueden hacerse a base de clicks de ratón.
Editor HTML: con modo WYSIWYG, previsualización y edición de código HTML. Soporta la creación de tablas, fuentes, zoom, enlaces a imágenes y URLs, soporte de películas flash, listas con viñetas o numéricas...
Soporte de editor de estilos: el editor WYSIWYG muestra la hoja de estilo actual del Portal, para un sencillo intercambio de clases.
Soporte de Internacionalización: los contenidos pueden ser asignados para una zona regional determinada y ser mostrada en función de la configuración de usuario o basado en las opciones del navegador web .

Tablón de mensajes

Respuesta inmediate mediante un sólo click.
Respuesta con cita: se puede citar un tema existente al responder.
Control del flujo: previene el abuso de envío masivo de mensajes mediante una ventana de tiempo configurable.
Creación de categorías contenedoras de foros.
Operaciones sobre Foros: se puede crear un foro y asignarlo a una categoría específica, además se puede copiar, mover, modificar y eliminar.
Reordenación de foros y categorías: se puede establecer el orden en el que se quiere que aparezcan los foros y categorías en las páginas.

Tomcat

Tomcat es un contenedor de servlets utilizado como la implementación de referencia oficial para las tecnologías de JavaServer Pages y Java Servlet. Las especificaciones de estas tecnologías las desarrolla Sun bajo el proceso de Comunidad Java.

JBoss Mail Server

Es el servidor de correo para la arquitectura de JBoss; se utiliza principalmente con JEMS.

JBoss MQ

Para la mensajería en JMS

JBoss Messaging

JBoss Messaging provee un servicio de mensajería robusto y de alto rendimiento, soporta esquemas de integración que van desde simples mecanismos entre aplicaciones hasta grandes Arquitecturas de Servicios (SOA) y Canales de Servicios Empresariales (ESB).

JBoss Forum (JForum)

Es el paquete dedicado especialmente a los foros como su nombre indica. Es un foro de discusión en Java similar en prestaciones y aspecto a phpBB. Tiene licencia BSD, soporte para bases de datos MySQL, PostgreSQL y HSQLDB, una interfaz altamente configurable, soporte para un número ilimitado de grupos de usuarios con permisos distintos, notificaciones por correo electrónico de actividad en los posts, soporte para internacionalización, etc.

Las novedades incluyen soporte RSS para foros, hilos y mensajes individuales, caché configurable, soporte para HSQLDB, mejoras de rendimiento y estabilidad, internacionalización configurable en cada usuario, instalación gráfica por medio de una interfaz web, los hilos más visitados, más opciones de administración relacionadas con la seguridad y los permisos de uso y muchas cosas más.

Fuente: http://es.wikipedia.org/wiki/JBoss

Comunidad: http://community.jboss.org/

domingo, 24 de julio de 2011

Tutorial de Servicios Web con Java

Hola a todos,

En esta ocasión les comparto dos tutoriales para la creación de Servicios Web con Java.

The Java Web Services Tutorial is an adjunct to the J2EE 1.4 Tutorial, which
you can download from the following location:
http://java.sun.com/j2ee/1.4/download.html#tutorial
The Java Web Services Tutorial addresses the following technology areas, which
are not covered in the J2EE 1.4 Tutorial:
 
• The Java Architecture for XML Binding (JAXB)
• The StAX APIs and the Sun Java Streaming XML Parser implementation
• XML and Web Services Security (XWS Security)
• XML Digital Signature
• Service Registry
 
All of the examples for this tutorial are installed with the Java WSDP 1.6 bundle
and can be found in the subdirectories of the //
samples directory, where JWSDP_HOME is the directory where you installed
the Java WSDP 1.6 bundle.

martes, 29 de marzo de 2011

James Gosling, padre de Java, se fue a Google



El programador que desarrolló Java dentro de Sun Microsystems, acaba de unirse a Google luego de decidir no quedarse en Sun cuando fue comprada por Oracle el año pasado.

Gosling publicó un post en su blog donde cuenta que aceptó una oferta de trabajo de Google, aunque por el momento no sabe cuáles serán sus funciones exactamente.

James Gosling también explica que en el último año su carrera atravesó “giros extraños” y refiere a un año duro después de sus discrepancias con el director de Oracle.

Asimismo, el creador de Java asegura que durante este tiempo dijo que “no” a muchas ofertas y que tomar decisiones como esta es “de las cosas más difíciles de la vida”.

La llegada a Google de Gosling coincide con una nueva demanda de Oracle hacia Google, que acusa al coloso online de incluir código de Java en Android OS.

En caso de que Oracle consiga ganar su batalla contra Google por usar Java en Android, todo apunta a que sobre Gosling recaerá la responsabilidad de adaptar un nuevo lenguaje a las características actuales del software.

Al respecto, Gosling habría comentado que en las reuniones entre Sun y Oracle, donde se estudiaban la situación de las patentes entre Sun y Google, “se pudo ver brillar lo ojos del abogado de Oracle”.

RedUsers

jueves, 30 de abril de 2009

Ejercicios de programación con recursividad y soluciones (codificados)

Recursividad

1.1. Introducción.

El concepto de recursividad va ligado al de repetición. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una función, son llamados desde ella misma una y otra vez, en contraposición a los algoritmos iterativos, que hacen uso de bucles while, do-while, for, etc.

1.2. Definición.

Algo es recursivo si se define en términos de sí mismo (cuando para definirse hace mención a sí mismo). Para que una definición recursiva sea válida, la referencia a sí misma debe ser relativamente más sencilla que el caso considerado.
1.3. Elementos de la Recursión

1.3. 1. Axioma

Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada a sí mismo. Evita la continuación indefinida de las partes recursivas.

1.3.2. Formula recursiva

Relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen nuevas llamadas a la función, pero están más próximas al caso base.
Por ejemplo: El factorial de un número

factorial(0) -> 1
factorial(1) -> 1*factorial(0)
factorial(2) -> 2*factorial(1)
factorial(3) -> 3*factorial (2)
… -> …
factorial(N) -> 3*factorial (N-1)

En la resolución de algoritmos recursivos es imprescindible encontrar estos dos elementos.

1.4. Tipos de recursión

1.4.1. Recursividad simple

Aquella en cuya definición sólo aparece una llamada recursiva. Se puede transformar con facilidad en algoritmos iterativos.

1.4.2. Recursividad múltiple
Se da cuando hay más de una llamada a sí misma dentro del cuerpo de la función, resultando más difícil de hacer de forma iterativa. Un ejemplo típico es la función de fibonacci

1.4.3. Recursividad anidada
En algunos de los argumentos de la llamada recursiva hay una nueva llamada a sí misma. La función de Ackermann se define por recursividad como sigue:

1.4.4. Recursividad cruzada o indirecta
Son algoritmos donde una función provoca una llamada a sí misma de forma indirecta, a través de otras funciones.

Planteamiento:

Ejercicio 1. Programar un algoritmo recursivo que calcule el factorial de un número.

Solución:

Código

----
int factorial(int n){
if(n==0) return 1; //AXIOMA
else return n*factorial(n-1); //FORMULA RECURSIVA
}
----
Planteamiento:

Ejercicio 2. Programar un algoritmo recursivo que calcule un número de la serie fibonacci.

Solución:

Código
----
int fibonaci(int n){
if(n==1 || n==2) return 1;
else return fibonaci(n-1)+fibonaci(n-2);
}
----
Planteamiento:

Ejercicio 3. Programar un algoritmo recursivo que permita hacer la división por restas sucesivas.

Solución:

Código
----
int division (int a, int b)
{
if(b > a) return 0;
else
return division(a-b, b) + 1;
}
----
Planteamiento:

Ejercicio 4. Programar un algoritmo recursivo que permita invertir un número. Ejemplo: Entrada: 123 Salida: 321

Solución:

Código
----
int invertir (int n)
{
if (n < n ="=" a="=" n ="=" tam ="=" b="=">0) return true;
else return negativo(n);
}

public boolean negativo(int n){
if(n<0) n="=" n="=" fila ="=" col ="=" fila ="=" col ="=" fila ="=" a="0," aux="1," b="0;" matriz =" new"> matriz.length -1){ //Si llegó a la ultima coluna, reseteamos los datos para la siguiente
i++;
j=0;
aux++;
}
if(i = (aux-1)){ //comprueba que estemos en el lugar adecuado, es decir ira imprimiento escaladamente
if(i==0)// si es la primera fila ingresamos aux=1
matriz[i][j] = matriz[i][j]=aux;
else
matriz[i][j] = matriz[i][i-1]*2;//ingresamos el valor correspondiente al ultimo de la "escala" *2
llenarMatriz(matriz, i , j+1);
}
else{ //si no, asignamos los valores anteriores de la escala
if(j==0)// comprobamos si es el primer digito a ingresar
matriz[i][j] = j+1;
else
matriz[i][j] = matriz[i-1][j];// asignamos el mismo numero de la fila anterior (i-1)
llenarMatriz(matriz, i, j+1);
}
}
}

public static void imprimir(){ //este metodo nos imprime la matriz por consola

for(int i=0; i< j="0;" c ="=" colmedio ="=" colmedio ="=" n ="="> x [n]) return x [0];
else return menor;
else
if (menor > x [n]) return menorvec (x, n - 1, x [n]);
else return menorvec (x, n - 1, menor); }
----
Planteamiento:

Ejercicio 17. Programar un algoritmo recursivo que muestre el numero mayor de un vector.

Solución:

Código
----
int mayor (int numeros [], int posicion) {
int aux;
if (posicion == 0) return numeros [posicion];
else {
aux = mayor (numeros, posicion - 1);
if (numeros [posicion] > aux) return numeros [posicion];
else return mayor (numeros, posicion - 1);
}
}
----

Autor: ·ohk·
http://foro.elhacker.net/ejercicios/ejercicios_recursivos_en_java_y_sus_soluciones-t231013.0.html

Agrego este material ya que permite ejemplificar claramente la recursividad y ahorrar código al programar, saludos.

Etiquetas

INTERNET (459) newsweek (305) SEGURIDAD (224) software (136) HACK (86) GOOGLE (47) Hacker (46) Geek (41) hardware (36) WINDOWS (34) Hackers (31) CRACK (29) facebook (29) video (28) DESCARGA (27) videos (26) Celulares (25) MICROSOFT (22) Informatica (21) apple (19) GRATIS (18) technology (18) virus (18) exploit (17) computación (16) informatico (16) web (15) cracker (14) INALAMBRICO (13) WINDOWS 7 (13) noticias (11) MSN (10) termino (10) ACTUALIZACION (9) Gamer (9) LapTops (9) Mac (9) PASSWORD (9) WINDOWS XP (9) dns (9) firefox (9) juegos (9) FOTOS (8) cientifico (8) iphone (8) WEP (7) antivirus (7) bibliografia (7) Desencriptar (6) INFINITUM (6) wifi (6) youtube (6) Craker (5) Culiacan (5) DESMOSTRACION (5) TELEFONIA (5) gmail (5) messenger (5) DIRECTA (4) DOWNLOAD (4) ESPAÑOL (4) XBOX (4) xss (4) Glosario (3) HTML (3) WPA (3) anuncios (3) ataques (3) hosting (3) hotmail (3) Guru (2) ajax (2) wpa2 (2)