lionheart815
Usuario (México)
Crea tu propio motor de busqueda con JAVA!! Hola! soy John Michel Rivera de León, en esta ocacion les traigo un Libro muy completo explicado paso a paso, con ejemplos y todo lo necesario para crear tu propio Motor de Busqueda!, como por ejemplo Google, Yahoo, etc. Todos los bots (Programas que buscan las URL y sobre que tratan), escudriñan en la web en busqueda de informacion para llenar una base de datos, y en base a la informacion almacenada, los resultados son mostrados al usuario en base a las palabras clave que se busquen expondra las url relacionadas. Todos los bots necesitan seguir instrucciones para ver a que carpetas de la pagina que visiten pueden accesar sin violar los derechos de la pagina. Este archivo se llama robots.txt, este lo tiene casi todas las paginas web, o almenos las que protegen ciertos directorios de los cuales no quieren que los bots tengan acceso. La propia taringa tiene este archivo robots.txt para que los bot's tomen la informacion de solo cietos directorios. Aqui el archivo de taringa: http://www.taringa.net/robots.txt Aqui el de google: http://www.google.com.mx/robots.txt Bueno, esos archivos pueden burlarse y ver todo el contenido de la pagina en base a los metadatos, y de esta manera armar nuestra base de datos y poder con esto ofrecer un servicio de motor de busqueda. Existen, Bots, Spiders, Crawlers y muchos mas tipos de programas para obtener informacion de la web. Todo esto esta explicado en el siguiente libro paso a paso y con ejemplo de implementacion: Link de libro y el API: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!981&parid=B86418091CF1BCB5!380 Ademas adjunto la API para trabajar con los paquetes y poder crear estos programas para realizar nuestro propio motor de busqueda!. "HAS DE TU PASION TU PROFESION" "PERSIGUE LA EXELENCIA Y EL EXITO TE AGARRARA CON LOS PANTALONES ABAJO" Deja tu Comentario!!
Software Matemático en Java (créalo o úsalo) Hola, taringueros, Soy John Michel Rivera de León, en esta ocasión les traigo mi Manual y Software matemático hecho en java. “Al final están los Links”. Este post consta de 2 partes: 1.- Software Listo para utilizarse; Resuelve integrales, grafica en 2D y 3D, y resuelve matrices por método de gauss, multiplicación de matrices, Teorema de Rouche Frobenius para demostrar si un sistema de ecuaciones (Matrices) tiene solución única, ilimitadas o no tiene solución. Y un par de cosillas más. (Este es para todos, listo para usarse) 2.- Manual y Código Fuente en Netbeans; Para aprender cómo hacerlo y el código fuente completo para modificar o aprender de él. (Solo para Programadores) El manual es general y está dirigido a un grupo específico, es decir programadores en Java, el manual explica cómo generar el software matemático a grandes rasgos, poniendo énfasis en la parte de generar tus archivos y compilarlos para cualquier ecuación que es donde todos declinan o se quedan atascados. Se explican además como graficar las ecuaciones 3D. Este manual no incluye como manejar la API java 3D y tampoco se explica cómo trabajan los métodos numéricos para resolver las integrales. Esto es porque estos 2 temas son muy muy amplios Además si los vas a aplicar es por que conoces el tema de métodos numéricos. Al bajar el API Java 3D esta tiene su documentación o pueden buscar un manual en internet, y los métodos numéricos pueden buscarlos en un Libro de Matemáticas. Aquí imágenes del manual: Como configurar el programa (Para todos) Esto es para todos. Primero se abre el programa, pueden ejecutar el acceso directo o dar doble click sobre Tobi_Soft_Reloaded.jar, una vez abierto se dirigen a la opción de “Configuración”, una vez dentro de las opciones de configuración instalan el JDK si es que no lo tienen, y también las librerías 3D para graficar. Una vez instaladas dentro de la configuración escriben la dirección del compilador de java llamado “javac”, justo como en el ejemplo que ya aparece por default, es necesario incluir doble diagonal como en el ejemplo. Aquí la imagen del frame de configuración: . FAQS ¿Cómo me muevo dentro de la gráfica 3D? R= Con las flechas del teclado, arriba, abajo, izquierda, derecha. Con la tecla Av Pág giras la cámara hacia abajo, y con Re Pág miras hacia arriba. Con las teclas - (menos) haces más lento el movimiento, y con la tecla + se mueve más rápido (solo presionar una vez y probar). ¿Por qué al generar una gráfica no me aparece nada? R= Porque tu ecuación está mal escrita, le falta un paréntesis, verifica tu ecuación. O si está bien tu ecuación es porque el programa tiene un timer de un par de segundos para compilar el archivo, si tu maquina es lenta espera un par de segundos andes de dar click en aceptar cuando aparece el cuadro de dialogo de que la gráfica esta lista. También puede ser porque configuraste mal la dirección del compilador de java, es forzosa la doble diagonal. ¿Me genera la gráfica pero todo está negro, por qué? R= Es porque tu ecuación genera un error, por ejemplo división por cero, o porque no tienes suficiente memoria Ram para generar todas las lineas. Trata de disminuir el rango de valores de X y Y, o el incremento hazlo más grande. ¿El método numérico dice que está listo pero no me muestra nada? R= El programa manda a llamar al WordPad, si no lo tienes instalado no te mostrara el resultado, pero en toda caso se genera el resultado en un archivo de texto dentro del directorio de la aplicación, este se llama “tabliu.txt”, puedes abrirlo con cualquier editor de texto para ver el resultado. Links de los programas: A continuación los links por separado: •Para Usuarios Normales; Usuarios que solo necesitan usarlo o necesitan graficar ecuaciones. Esta dentro de la carpeta Software Matemático Free Link: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!894&parid=B86418091CF1BCB5!380 •Para programadores; El manual y el código fuente del proyecto en Netbeans. Está en la carpeta Software Matemático Programadores. Link: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!905&parid=B86418091CF1BCB5!380 Aquí el Software en acción graficando y las ecuaciones para que las prueben: http://www.taringa.net/posts/paranormal/14068302/Matematicas-de-otro-mundo-formas-extranas-al-azar.html Respecto a este post Este Software me tomo varios meses de desarrollo así que espero lo aprecien, Espero que comenten, dejen puntos, agreguen a fav o recomienden el post, ya que es un incentivo para seguir compartiendo conocimiento y hacer manuales. Otro Post que te puede interesar: Juego de cartas en Java Conquian (Juegalo o Crealo) : http://www.taringa.net/posts/ciencia-educacion/14387806/Juego-de-Cartas-en-Java-_Crealo-o-_salo_-Conquian.html

¡Crea tu propio Clúster y programas que se ejecutan en paralelo con MPI JAVA! Que tal amigos, en esta ocasión les traigo mi Manual que yo desarrolle de Computo Paralelo con MPI JAVA . En este manual aprenderán a crear un clúster de computadoras y crearan un programa que trabaja en paralelo en los distintos nodos. Estos se comunican por medio de una Interfaz de Paso de Mensaje, MPI, Que se utiliza también con clúster C, C++. Así que sirve para programadores en C,C++ y Java!. Java la utiliza por medio de JNI (Interfaz Nativa de Java) . Si no conocen JNI y quieren aprenderlo primero para conocer a fondo cómo funciona el clúster MPI Java, aquí esta el link de mi manual de JNI: http://www.taringa.net/posts/ciencia-educacion/14446598/JNI-Java-Native-Interfaz-_Comunica-C_C_-con-Java_.html Este manual de MPI Java les servirá para crear sus aplicaciones que corran en un clúster. Muy bueno para aplicaciones de ingeniería como por ejemplo el algoritmo de Montecarlo. Aplicaciones de física, simulaciones, hasta para presentar un trabajo final en la Universidad xD!! Aquí la imágenes: El link del manual, Incluye además el API de MPI Java para conocer todos los métodos que existen. Link Manual MPI Java: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!947&parid=B86418091CF1BCB5!380 Acerca de este Manual: Estos manuales que desarrollo los desarrollo con el fin que aprendan. Dejen su comentario y Recomienden. En mi SkyDrive mis manuales tienen muchas descargas. Lástima que ni siquiera dejan su comentario en el post o recomendación, solo cuando necesitan más ayuda si me manda MP o e-mail, pero no se quieren tomar la molestia de dejar un comentario, puntos o recomendación, cuando les sirvió el material que desarrolle. Espero aprecien el esfuerzo.
Juego de cartas en Java Conquian (Juegalo o Crealo) El juego yo lo programe y esta diseñado para una resolución de 1280x800( Por que juego en la lap xD), en resoluciones más pequeñas no se podrá jugar correctamente. Configura la resolución de tu pantalla a este tamaño o uno mayor. Como jugar: Primero ingresa a cualquiera de las 2 carpetas, ya sea la de 2 jugadores o 3 jugadores. En este ejemplo lo voy a hacer con las de 3 jugadores. Servidor Una vez dentro de la carpeta de 3 jugadores, debemos iniciar el servidor, este se iniciara una sola vez en la máquina que va a ser el anfitrión o Host (Como en el Age of empires). Entonces elegimos la carpeta que dice “Servidor 3p”, una ves dentro de ella nos dirigimos a la carpeta “dist”, dentro de ella, ejecutamos el archivo bat para que ejecute el servidor. Entonces debiste hacer: 3 players->Servidor 3p->dist->server.bat (doble click). Esto ejecutara una ventana en ms-dos para observar el servidor: Eso, es todo para iniciar el servidor. (Solo uno de los 3 jugadores debe iniciar el servidor, los demás se conectaran por la IP de la máquina de quien inicio el servidor) Clientes Esto es para los 3 jugadores, independientemente de cuál de los 3 inicio el servidor. Ahora, ya que la maquina 1 inicio el servidor, debe de iniciar un cliente para jugar con los otros jugadores, que estarán en otras maquinas que llamaremos 2 y 3. Para esto cada jugador en su respectiva maquina deberá dirigirse a la carpeta “Cliente 3p”, luego a “dist” y dentro de dist, ejecutar cliente_chat_chafon.jar (doble click). Entonces debieron hacer: cliente 3p->dist->cliente_chat_chafon.jar. Esto les abrirá un cuadro de dialogo que los saludara, al dar click en aceptar, les mostrara un cuadro de dialogo para introducir la dirección IP del servidor (Esta IP se las debe de dar la persona que inicio el servidor, puede obtenerla con ipconfig en Windows o ifconfig en linux)l. Supongamos que la Maquina 1 inicio el servidor y tiene la IP 192.168..7.1, entonces en el cuadro de dialogo, que solicita la IP del servidor, todos deberán ingresar esa dirección para conectarse a la maquina que inicio el servidor. Ya que metieron la IP, aparecerá otro cuadro de dialogo solicitando su nombre de usuario, aquí pueden ingresar el que quieran. Una vez que ingresaron su nombre de usuario, se conectaran a la maquina de quien inicio el servidor, en este caso supuestamente la maquina 1. La maquina 1 como inicio el servidor, observara que en la venta de ms-dos del servidor aparecerán los registros de quienes se conectaron, de estamanera pueden confirmasi ingresaron correctamente. Ya que se conectaron con el cliente, les aparecerá una interfaz con sus cartas en la parte inferior, el mazo de cartas que es de todos, está en la parte superior. Disponen de un chat en la parte inferior izquierda para charlar mientras juegan. Las áreas del juego se dividen en 4, El área de cambio que esta en la parte derecha, aquí ingresan la carta que quieran dar de cambio cuando están iniciando el juego. La segunda área es la de pago, que esta al lado del chat, aquí ponen la carta que quieran dar de pago cuango bajen una tercia o les metan una carta. La tercer área es la superior y es donde esta el mazo de cartas de la baraja, esta es común para todos. La ultima área es la del Cuadro grandote que ocupa casi toda la aplicación, en esta área se bajan las cartas que el jugador quiera bajar y mostrar a los otros jugadores. Como puenden observar todas las cartas de abajo están boca abajo, al dar un click sobre ellas las volteamos boca arriba. Para moverlas hacemos un drag and drop. Es decirdamos un click encima de alguna de ellas, dejamos presionado el click del mouse y la arrastramos y soltamos donde querramos dejarla. Ya que observamos nuestras cartas, vemos cual no nos sirve y la metemos dentro del área de cambio y damos un click en el boton“cambio” para enviársela al otro jugador y esperar que el nosde nuestro cambio, la carta permanecerá boca abajo aun que le demos click, hasta que el jugador que nos debe de dar nuestro cambio la envie. Ya que todos tiene su cambio, entonces ya podemos empezar a jugar, ahora se ponen decuerdo por el chat y ven quien jalara primero del mazo de cartas. El jugador que sea primero le da un click al mazo de cartas que aparece como la carta boca abajo, y automáticamente le mostrara a TODOSla carta que jalo del mazo,esta la puede utilizar cualquiera, pero respeten las reglas y conforme se organizaron que la jalen en el orden que van. Supongamos que el jugador John que tiene las otras dos cartas de copas, 4 y 5, y que jalo el 6 de la baraja quiere hacer esa tercia, bajarla y que los demás lo vean. Entonces jala sus cartas al área de juego, las acomoda como guste, y una vez que esta listo, da click en “bajar”, para que estas sean visibles en el tablero de juego de los otros 2 jugadores. Cuando ya bajo su juego, a los otros 2 jugadores les aparecerán automáticamente en sus tableros las cartas que bajo el otro jugador. Vean que las cartas no son las misma, esta es la vista de otro jugador: Regresando al primero jugador que bajo la tercia, ahora debe de dar su carta de pago, de acuerdo a las reglas del juego de conquián clásico. Entonces, arrastra la carta que no le sirve al área de pago, y da click en “pago”. Cuando da click en pago, esta se hace publica y se muestra en el área del mazo de la baraja, para que los otros jugadores la utilizen si es que les sirve la carta, si no les sirve a ninguno, pues a quien le toque su turno solo da otra vez click sobre el mazo de cartas y se mostrara la carta siguiente en el mazo de cartas. En la imagen anterior, podemos observar que si un jugador se quiere salir, solo debe escribir “adios”, esto lo desconectara del servidor de juego. Cuando un cliente se desconecta, en el lado del servidor podremos ver el log de que ya se retiro. Cuando queremos ya cerrar el servidor o terminamos de jugar o se acabaron las cartas, vamos a la ventana de ms-dos y apretamos ctrl+C, nos aparecerá un mensaje que sideseamos terminar el trabajo por lotes, escribimos S y damos aceptar, también cerramos nuestra interfaz de cliente y listo. FAQS: ¿Por qué cuando digo adiós, esta se repite al infinito? R= por que es un bug que ya nunca arregle, puesto que este juego solo lo hice con la intención de jugar en clase con mis amigos de la universidad, y ese tipo de bug’s no era rrelevante xD. Link del program para 2 y 3 players (Inlcuye una pequeña presentacion en power point para programadores y codigo fuente completo): https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!908&parid=B86418091CF1BCB5!380 Respecto a este Post: Amigos, este juego lo realice con la intencion de divertirme con los amigos en la Universidad cuando ya no habia clases, o eran aburridas xD. Pero sirve para aprender a programar también. Dejen comentarios, puntos, agreguen a fav o follow me. Ya que es un incentivo para seguir compartiendo conocimiento. Otro post que te puede interesar: Software Matemático en Java (créalo o úsalo): http://www.taringa.net/posts/ciencia-educacion/14387493/Software-Matematico-en-Java-_crealo-o-usalo_.html
JNI Java Native Interfaz Que hay Taringueros, soy John Michel Rivera de León, en esta ocacion les traigo un manual introductorio hecho por mi y ademas un tutorial freeware de JNI Java Native Interfaz. Esto sirve para comunicar porgramas escritos en C o C++ con java, es decir de esta manera existe una interoperabilidad entre ambos programas comunicandose y compartiendo informacion. Esto es util cuando uno ya tiene una parte programada en algun lenguaje, pero requiere enviar la info al otro programa. O por ejemplo si algun programador es diestro ya sea en C o en java, puede programar la parte mas dificil en el lenguaje que es mas diestro, y enviar solo los resultados al programa en el que no se sabe programar tan fluido. Aqui unos Screen Shots: Este pack, contiene Mi manual introductorio, un tutorial de programadores hecho por MacProgramadores y un extra. Sale espero sea de utilidad para alguno esta informacion, habeces es necesario, y aun que no lo utilices por ahora, almenos ya sabes que existe y tal vez despues te sea de utilidad. Link: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!926&parid=B86418091CF1BCB5!380 Saludos, dejen puntines, o recomendacion, ya que es el incentivo para compartir mas conocimiento Tal vez te interesen mis otros manuales: Crea tu juego de cartas en java: http://www.taringa.net/posts/ciencia-educacion/14387806/Juego-de-Cartas-en-Java-_Crealo-o-_salo_-Conquian.html Crea tu software matematico: http://www.taringa.net/posts/ciencia-educacion/14387493/Software-Matematico-en-Java-_crealo-o-usalo_.html Crea una Red Neuronal Artificial: http://www.taringa.net/posts/info/13935371/red-neuronal-artificial-modelo-de-hopfield.html Crea tu Servidor DNS y DHCP: http://www.taringa.net/posts/linux/13909319/Manual-de-Instalacion-Servidor-DNS-y-DHCP-en-Linux.html Crea tu servidor Apache+Tomcat+PHP+Mono+FTP+MySQL: http://www.taringa.net/posts/linux/13461789/instalacion-de-Apache_Tomcat_PHP_Mono_MySQL_VLM_FTP-en-Linux.html
Hola, soy John Michel Rivera de León. Este es un mino post para aprender a hacer un frame translucido con el nuevo JDK 1.7 Creamos un frame a la antiguita, establecemos su fondo, decimos que no este decorado y por medio de un metodo llamado paint component pintamos los graficos del frame. Aqui el Screen shot de como se ve el frame, lo probe en win xp en mi maquina virtual: Aqui el codigo, es poco y es comprensible: import java.awt.*; import java.awt.event.MouseEvent; import java.awt.geom.Area; import java.awt.geom.Path2D; import java.awt.geom.RoundRectangle2D; import javax.swing.*; import javax.swing.event.MouseInputAdapter; /** * * @author John Michel */ public class Allk { public Allk(){ } public static void main(String[]args){ JFrame frame = new JFrame("Frame test"); //Quitamos las decoraciones frame.setUndecorated(true); //Quitamos el fondo frame.setBackground(new Color(0,0,0,0)); frame.setContentPane(new frametestk()); frame.pack(); //tamaño de la venta frame.setSize(500, 200); frame.setVisible(true); //centrar en pantalla frame.setLocationRelativeTo(null); } private static class frametestk extends JComponent { public void paintComponent(Graphics graphics) { Graphics2D g = (Graphics2D) graphics; //creamos un gradiente translucido Color[] colors = new Color[]{ new Color(0,0,0,0) ,new Color(0.3f,0.3f,0.3f,1f) ,new Color(0.3f,0.3f,0.3f,1f) ,new Color(0,0,0,0)}; float[] stops = new float[]{0,0.2f,0.8f,1f}; LinearGradientPaint paint = new LinearGradientPaint( new Point(0,0), new Point(500,0), stops,colors); //pintamos todo junto con el texto g.setPaint(paint); g.fillRect(0, 0, 500, 200); g.setPaint(Color.WHITE); g.drawString("Esta es una prueba Loca xD", 200, 100); } } } Espero les sea util la info, xD. Cuando tenga tiempo subo mas manuales. Visiten mi perfil para manuales sobre: JavaFX Redes Neuronales Software graficador y matematico en java CORBA JNI (interfaz nativa de java) Y muchas cosas mas..........................xD
red neuronal artificial modelo de hopfield Hola a todos, en esta ocasión les traigo un PDF-curso o manual hecho por mí, para comprender las redes neuronales de acuerdo al modelo de Hopfield dentro de la Inteligencia Artificial. Este manual lo desarrolle con la finalidad de que comprendan de una manera fácil y sencilla como es que trabaja una red neuronal artificial y como puedan crear una. Este documento está dirigido para todo el público ya que va desde lo básico hasta lo complejo, pero da un amplio panorama para que sin ser experto en el tema se pueda comprender que es una red neuronal y como funciona, así que es de interés común para todo el público no solo programadores . El manual consta de 4 partes: 1.Información sobre el cerebro humano y sus componentes. (Con dibujitos hechos por mi ) 2.Descripción del modelo de Hopfield. 3.Ejemplo Teórico con respaldo matemático. 4.Ejemplo Práctico de programación de la Red Neuronal Artificial. (y código fuente :O ). Debido al temor de la ley SOPA (jajaja no es cierto, lo hice por gusto xD), desarrolle mis propios dibujos para este manual así que espero aprecien mi arte . Aquí unos Screen Shots: Espero esta información sea de utilidad a muchas personas. No pongo la información aquí dado que el PDF es más cómodo de leer. El Link del PDF es el siguiente, si tienen problemas avisarme: Dentro de la carpeta I.A encontraran el PDF: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!830&parid=B86418091CF1BCB5!380 Si les sirvió de algo la información no se olviden comentar, ya que es un incentivo para seguir compartiendo conocimiento xD. PD: Si les sobran unos puntos son bien recibidos xD!! Mis otros post, ya que van de la mano: Instalacion de servidor DNS y DHCP en Linux. http://www.taringa.net/posts/linux/13909319/Manual-de-Instalacion-Servidor-DNS-y-DHCP-en-Linux.html#comid-847704 Instalacion de Apache Tomcat PHP Mono MySQL desde código Fuente: http://www.taringa.net/posts/linux/13461789/instalacion-de-Apache_Tomcat_PHP_Mono_MySQL_VLM_FTP-en-Linux.html#comid-834457 Si desean puedo subir más manuales sobre Hibernate, JavaFX 2.x, MPICH, MPIJava, Todo lo relacionado con programación, etc.

Hola Taringueros, en este post les mostrare curiosidades de la I.A. Una de las cosas que me gusto mas durante mi carrera fue la materia de Inteligencia Artificial, lo que se obtenia con ella era asombroso. Algo que me parecio fascinante fue el Algoritmo resuelvelo todo, este es el Back Tracking. BACK TRACKING (Si el problema tiene Solucion....La encuentra). Este Algoritmo te resuelve cualquier problema si lo sabes implementar correctamente. El encuentra una o todas las soluciones posibles a un problema. ¿Por qué se llaman algoritmos de vuelta atrás?. Porque en el caso de no encontrar una solución en una subtarea se retrocede a la subtarea original y se prueba otra cosa distinta (una nueva subtarea distinta a las probadas anteriormente). Los algoritmos de vuelta atrás se utilizan para encontrar soluciones a un problema. No siguen unas reglas para la búsqueda de la solución, simplemente una búsqueda sistemática, que más o menos viene a significar que hay que probar todo lo posible hasta encontrar la solución o encontrar que no existe solución al problema. Para conseguir este propósito, se separa la búsqueda en varias búsquedas parciales o subtareas. Asimismo, estas subtareas suelen incluir más subtareas, por lo que el tratamiento general de estos algoritmos es de naturaleza recursiva. Los algoritmos de vuelta atrás tienen un esquema genérico, según se busque una o todas las soluciones, y puede adaptarse fácilmente según las necesidades de cada problema. A continuación se exponen estos esquemas, extraídos de Wirth (ver Bibliografía). Los bloques se agrupan con begin y end, equivalentes a los corchetes de C, además están tabulados. - esquema para una solución: procedimiento ensayar (paso : TipoPaso) repetir | seleccionar_candidato | if aceptable then | begin | anotar_candidato | if solucion_incompleta then | begin | ensayar(paso_siguiente) | if no acertado then borrar_candidato | end | else begin | anotar_solucion | acertado <- cierto; | end hasta que (acertado = cierto) o (candidatos_agotados) fin procedimiento - esquema para todas las soluciones: procedimiento ensayar (paso : TipoPaso) para cada candidato hacer | seleccionar candidato | if aceptable then | begin | anotar_candidato | if solucion_incompleta then | ensayar(paso_siguiente) | else | almacenar_solucion | borrar_candidato | end hasta que candidatos_agotados fin procedimiento EJEMPLO DE BACK TRACKING La vuelta del caballo Se dispone de un tablero rectangular, por ejemplo el tablero de ajedrez, y de un caballo, que se mueve según las reglas de este juego. El objetivo es encontrar una manera de recorrer todo el tablero partiendo de una casilla determinada, de tal forma que el caballo pase una sola vez por cada casilla. Una variante es obligar al caballo a volver a la posición de partida en el último movimiento. Por último se estudiará como encontrar todas las soluciones posibles partiendo de una misma casilla. Para resolver el problema hay que realizar todos los movimientos posibles hasta que ya no se pueda avanzar, en cuyo caso hay que dar marcha atrás, o bien hasta que se cubra el tablero. Además, es necesario determinar la organización de los datos para implementar el algoritmo. - ¿Cómo se mueve un caballo?. Para aquellos que no sepan jugar al ajedrez se muestra un gráfico con los ocho movimientos que puede realizar. Estos movimientos serán los ocho candidatos. Con las coordenadas en las que se encuentre el caballo y las ocho coordenadas relativas se determina el siguiente movimiento. Las coordenas relativas se guardan en dos arrays: ejex = [2, 1, -1, -2, -2, -1, 1, 2] ejey = [1, 2, 2, 1, -1, -2, -2, -1] El tablero, del tamaño que sea, se representará mediante un array bidimensional de números enteros. A continuación se muestra un gráfico con un tablero de tamaño 5x5 con todo el recorrido partiendo de la esquina superior izquierda. Cuando se encuentra una solución, una variable que se pasa por referencia es puesta a 1 (cierto). Puede hacerse una variable de alcance global y simplificar un poco el código, pero esto no siempre es recomendable. Para codificar el programa, es necesario considerar algunos aspectos más, entre otras cosas no salirse de los límites del tablero y no pisar una casilla ya cubierta (selección del candidato). Se determina que hay solución cuando ya no hay más casillas que recorrer. Para aprender el algoritmo de BackTracking o ver el codigo fuente de caballo este es el http://www.algoritmia.net/articles.php?id=33 ___________________________________________________________________________________________ Inteligencia Artificial desarrolla su propio videojuego Software que inventa otro Software? Esto no me parecia imposible, pero en cierto modo asusta un poco la idea de que las maquinas piensen por si mismas y tomen sus propias decisiones excluyendo nuestros deseos. Angelina, una entidad artificialmente inteligente, desarrolla un videojuego casi en su totalidad, con un conocimiento sumamente sorprendente de las necesidades de entretenimiento humanas. De la inteligencia artificial se espera que sea capaz de actuar por sí sola en contextos prácticos, pero la verdad es que sus fundamentos pueden aplicarse en cualquier actividad humana, incluso el entretenimiento. Tal es el caso de Angelina, una entidad artificialmente inteligente que desarrolló por sí misma y de la nada un videojuego casi entero. Utilizando un técnica conocida como “co-evolución cooperativa”, Angelina diseñó por separado los diferentes aspectos de “InSpace Station Invaders”, juego en el que un científico debe defenderse de robots y aliens que le impiden escapar a una estación espacial. Características como el diseño de cada nivel, el comportamiento de los enemigos y los potenciadores que dan al jugador habilidades extras corrieron por cuenta de Angelina. Pero por si esto no fuera suficientemente sorprendente, el sistema también combinó todo esto para simular el modo de juego de un ser humano e identificar los elementos más divertidos o interesantes para el juego. Los niveles imposibles de completar, por ejemplo, fueron descartados de inmediato, y aquellos difíciles pero desafiantes y que requerían de cierta inteligencia para superarse quedaron catalogados como divertidos. Sin embargo Angelina tuvo problemas con los efectos gráficos y de sonido, finalmente añadidos por Michael Cook, investigador de la computación en el Imperial College de Londres y creador de Angelina, quien piensa además que su invención, más que representar una amenaza para los desarrolladores de juegos, puede ser una herramienta sumamente útil que refuerce su labor. En un dato curioso, Angelina creó un juego especialmente para el sitio New Scientist, que tiene la singular característica de que el personaje principal no puede morir porque “de introudcir la muerte”, explica Cook, “habría sido muy fácil para Angelina crear juegos imposibles de cumplir”. Aqui el Juego creado por la I.A, para que lo jueguen: (Es mejor que mis burdos intentos por crear uno propio xD ___________________________________________________________________________________________ Conversaciones con una máquina. (La mayoria alguna vez interactuamos con algun bot). Todos alguna vez hemos hablado con una bot, por ejemplo los contactos sexuales que se agregan al msn messenger, o aqui mismo en taringa los supuestos usuarios que dejan publicidad en tus mensajes privados. pero de eso a confiarle tus secretos a una maquina...... El hecho de poder conversar con una máquina de manera coherente no es algo nuevo, existen asistentes virtuales en algunas webs en las que podemos realizar preguntas en lenguaje natural y obtener respuestas coherentes; de hecho, fue en 1964 cuando Joseph Weizenbaum desarrolló Eliza, un programa que era capaz de conversar con una persona. Y aunque Eliza era capaz de conversar de manera coherente, realmente, no era tan inteligente como aparentaba puesto que su rutina estaba sustentada en los principios de la psicología rogeriana de Carl Rogers, es decir, empatizar con el individuo para que se sienta escuchado, algo que se trasladó a Eliza en forma de frases hechas que se utilizaban para que el individuo siguiese conversando. Dicho de otra forma, Eliza era capaz de procesar las palabras y responder con la frase programada más adecuada o, en caso contrario, responder con una frase que simbolizase un asentimiento de lo que se decía para que el individuo siguiese hablando. Concretamente, la conversación de Eliza giraba sobre tres grupos de frases (que se pueden probar en alguno de los simuladores existentes en la red) que se encontraban programadas en su rutina: La conjugación de estos tres juegos de frases programadas ante un interlocutor que siguiera la conversación hacía que Eliza ofreciese respuestas tan convincentes que hacían que mucha gente creyese que estaban hablando con alguien de verdad o bien que, realmente, la máquina les comprendía. Weizenbaum se sorprendió mucho al ver cómo su secretaria se sentaba delante de Eliza y le contaba aspectos íntimos de su vida porque pensaba que, realmente, la máquina la estaba escuchando. De hecho, algunos psiquiatras de la época veían en Eliza una posible forma de conectar con pacientes graves que no hablaban con su terapeuta. En 1976, y tras todo lo acontecido y observado, Weizenbaum publicó Computer Power and Human Reason, un libro en el que contó su experiencia con Eliza y en el que dejó clara su crítica visión sobre la incorporación de la inteligencia en las máquinas. Wiezenbaum admitía la viabilidad de la Inteligencia Artificial pero, por razones morales, se oponía a su utilización. Sin duda es interesante, pero no sustituyen una amena charla con los amigos de T! Si quieren aprender mas sobre I.A y Redes Neuronales, aqui les dejo el link de un manual paso a paso: Espero les guste el Post, dejen su opinión o comentario que es lo mas apreciado . ___________________________________________________________________

Algoritmo para obtener valores de un XML JAVA Hola, soy John Michel Rivera de Leon. Este post les muestra un algoritmo simple para obtener los valores de un XML sin necesidad de utilizar algun API de compra. No pagues por lo que puedes hacer xD. Muy bien, el programa hace lo siguiente: Obtenemos una respuesta o XML, en este caso una variable CLOB de Oracle, que permite un archivo de hasta 4gb de texto. Este archivo tiene dentro la respuesta XML con muchisimos datos dentro de tags. Aqui un ejemplo: La respuesta XML original obtenida es la siguiente: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header/><soapenv:Body><p24:envioResponse xmlns:p24="http://service.com_sicap_rh.metlife.mx.com"><envioReturn><TransferenciaDTO><EMPLID>2936172</EMPLID><FIRST_NAME>John</FIRST_NAME><LAST_NAME>Rivera</LAST_NAME><SECOND_LAST_NAME>de León</SECOND_LAST_NAME><COMPANY>MetLife</COMPANY><DEPTID>239152</DEPTID><DEPTID_DESCR>ConsultoresTI</DEPTID_DESCR><LOCATION>MX</LOCATION><LOCATION_DESCR>Ciudad México</LOCATION_DESCR><JOBCODE>21</JOBCODE><JOBCODE_DESCR>LiderP</JOBCODE_DESCR><REPORTS_TO>2453211</REPORTS_TO><REPORTS_TO_EMPLID>2736122</REPORTS_TO_EMPLID><REPORTS_FIRST_NAME>Jose</REPORTS_FIRST_NAME><REPORTS_LAST_NAME>Ponce</REPORTS_LAST_NAME><REPORTS_SEC_NAME>De León</REPORTS_SEC_NAME><EMPL_STATUS>1</EMPL_STATUS><NATIONAL_ID>7</NATIONAL_ID><EMAIL_ADDR>[email protected]</EMAIL_ADDR><MANAGER_LEVEL>5</MANAGER_LEVEL><MLM_EMPLID>2372412</MLM_EMPLID><MLM_REPORTS_TO>2834124</MLM_REPORTS_TO><AREA>11</AREA><MLM_REPORTS_TO_2>5273132</MLM_REPORTS_TO_2>2835123<MLM_REPORTS_TO_3>2513421</MLM_REPORTS_TO_3></TransferenciaDTO> … Hasta N registros Esta respuesta debe ser manejada para obtener únicamente los valores y pasarlos como parámetros al procedimiento SICAP_P_Insert_Users (que es un Store Procedure de Oracle para almacenar los datos en la Base de datos). La respuesta anterior debe ser convertida a la lista Valor 1 Valor 2 ….. Valor N El algoritmo crea unos arreglos para almacenar los nombres de los atributos y otro para sus valores. En esta caso dos arreglos con un tamaño de 25 registros (Que son los tags que conocemos de los cuales queremos obtener el valor, puede ser de tamaño N). Finamente se crea otro arreglo para almacenar la respuesta XML en forma de lista tomando como salto de línea el carácter “<” que indica la apertura de un tag (para esto utilizamos el metodo split). Después se genera un bucle que va desde 0 hasta el tamaño del arreglo de la respuesta XML. Una vez dentro del bucle se busca la posición en la línea i de la respuesta XML el carácter “>” este indica el fin de un tag. Despues se busca el tamaño final de la línea i. Finalmente se obtiene el tag de esa línea seleccionando desde el inicio hasta donde inicia el carácter “>”. Ya que se tienen esos datos se inicia otro bucle que va desde 0 hasta el 25 que es el número de atributos. Una vez dentro de este nuevo bucle se compara el tag obtenido con los que se almacenaron al inicio sobre un arreglo. Si coincide el tag con alguno de los que se tienen registrados, entonces en esa línea se encuentra el valor del tag que es el que queremos almacenar. Si coincide entonces obtenemos el valor seleccionando desde la posición del carácter “>”+1 hasta el tamaño total de la línea. Esta valor se almacena en el registro k del arreglo de respuestas, esto se repite con el resto de tags conocidos. Si el tag que se obtiene es el “/TransferenciaDTO” esto quiere indicar que aquí termina el primer bloque de datos, por lo tanto deben de registrarse en la base de datos. Cuando se recibe este tag se llama al procedimiento almacenado SICAP_P_Insert_Users, pasándole como parámetros los datos obtenidos. Esto se repite para todas las líneas de la respuesta XML. Cuando finaliza todo se cierra la conexión con la base de datos, si surge algún error este es retornado hacia la base de datos y entonces se registra. Para comprender mejor el algoritmo este es un ejemplo sencillo. Se recibe la respuesta original como. <EMPLID>2936172</EMPLID><COMPANY>Oracle</COMPANY> Se realiza un split con el carácter “<” el cual lo ordena en forma de lista. EMPLID>2936172 /EMPLID> COMPANY>Oracle /COMPANY> Se obtiene la primera linea y se busca la posicion del character “>” EMPLID>2936172 Posición=6 Ahora se obtiene el tamaño total de la cadena para conocer el final. EMPLID>2936172 Tamaño=14 Se obtiene el tag seleccionando desde el origen hasta donde inicia el carácter “>”. EMPLID>2936172 Tag=EMPLID Ahora se compara el Tag obtenido con los que se registra en el arreglo de tags conocidos. Como el tag EMPLID esta registrado entonces se almacena en el arreglo de respuestas. Se obtiene la respuesta seleccionando desde la posición de carácter “>”+1 hasta el tamaño total de la cadena que indica el final. EMPLID>2936172 Respuesta=2936172 Esto se realiza con todos las líneas obtenidas de la respuesta XML. Una vez que se recibe el tag “/TransferenciaDTO” que sabemos que es el que indica el fin de un bloque de datos(no se incluye en el arreglo de tags conocidos, pues es el de fin de bloque), entonces se invoca al procedimiento almacenado pasándole como argumentos los valores obtenidos para ser registrados. Aqui mi codigo: import oracle.jdbc.driver.*; import oracle.sql.*; import java.sql.*; // John Michel Rivera de León public class ParsingXML { public ParsingXML(){ } public static String StoreData(oracle.sql.CLOB XMLSOAP, String Usuario) throws SQLException{ //creamos la conexion hacia la base de datos de manera interna, en este caso especificamos Connection conn = DriverManager.getConnection("jdbc:default:connection:"); CallableStatement cstmt = conn.prepareCall("{CALL sicap_pck_ws.sicap_p_insert_users(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}"); try { int fin=((int) XMLSOAP.length()); //se realiza el split para la respuesta XML/SOAP String[] palabras = XMLSOAP.getSubString(1,fin ).split("<"); String[]TagsXML=new String[25];//para almacenar los tags clave String[]Responses= new String[25];//para almacen de resultados TagsXML[0]="EMPLID"; TagsXML[1]="FIRST_NAME"; TagsXML[2]="LAST_NAME"; TagsXML[3]="SECOND_LAST_NAME"; TagsXML[4]="COMPANY"; TagsXML[5]="DEPTID"; TagsXML[6]="DEPTID_DESCR"; TagsXML[7]="LOCATION"; TagsXML[8]="LOCATION_DESCR"; TagsXML[9]="JOBCODE"; TagsXML[10]="JOBCODE_DESCR"; TagsXML[11]="REPORTS_TO"; TagsXML[12]="REPORTS_TO_EMPLID"; TagsXML[13]="REPORTS_FIRST_NAME"; TagsXML[14]="REPORTS_LAST_NAME"; TagsXML[15]="REPORTS_SEC_NAME"; TagsXML[16]="EMPL_STATUS"; TagsXML[17]="NATIONAL_ID"; TagsXML[18]="EMAIL_ADDR"; TagsXML[19]="MANAGER_LEVEL"; TagsXML[20]="MLM_EMPLID"; TagsXML[21]="MLM_REPORTS_TO"; TagsXML[22]="AREA"; TagsXML[23]="MLM_REPORTS_TO_2"; TagsXML[24]="MLM_REPORTS_TO_3"; int localiza=0; int finals=0; String trimtag=""; for(int i=1;i<palabras.length;i++){ localiza= palabras.indexOf(">"); //1 buscamos el inicio finals= palabras.length(); //buscamos el final de la linea trimtag=palabras.substring(0, localiza);//seleccionamos primero valor del primer tag deacuerdo a su talla y checamos //ya que obtenimos el 1er tag que siempre es el mismo pasamos linea por linea buscandolo for(int k=0;k<TagsXML.length;k++){// se verifica el tag con los almacenados en el arreglo if(TagsXML.matches(trimtag)){ // si con cuaerda con alguno entonces almacena el valor if(palabras.substring(finals-1, finals).matches("n")){ Responses=palabras.substring(localiza+1, finals-1); }else{ Responses=palabras.substring(localiza+1, finals); } } if(trimtag.matches("/TransferenciaDTO")){//si se obtiene el tag de fin de clase se almacena el resultado k=TagsXML.length; cstmt.setString(1, Responses[0]); cstmt.setString(2, Responses[1]); cstmt.setString(3, Responses[2]); cstmt.setString(4, Responses[3]); cstmt.setString(5, Responses[4]); cstmt.setString(6, Responses[5]); cstmt.setString(7, Responses[6]); cstmt.setString(8, Responses[7]); cstmt.setString(9, Responses[8]); cstmt.setString(10, Responses[9]); cstmt.setString(11, Responses[10]); cstmt.setString(12, Responses[11]); cstmt.setString(13, Responses[12]); cstmt.setString(14, Responses[13]); cstmt.setString(15, Responses[14]); cstmt.setString(16, Responses[15]); cstmt.setString(17, Responses[16]); cstmt.setString(18, Responses[17]); cstmt.setString(19, Responses[18]); cstmt.setString(20, Responses[19]); cstmt.setString(21, Responses[20]); cstmt.setString(22, Responses[21]); cstmt.setString(23, Responses[22]); cstmt.setString(24, Responses[23]); cstmt.setString(25, Responses[24]); cstmt.setString(26, Usuario); cstmt.executeUpdate(); } } }//fin for } catch (Exception e) {//si ocurre algun error lo cachamos return "Error ocurrido durante la transacción: n"+e; } //cerramos la conexion a la B.D cstmt.close(); return "TERMINADO CORRECTAMENTE: n"+XMLSOAP.getSubString(1,32000 ); } } Este algoritmo puede ser adaptado para hacerlo con un archivo.xml, o como se guste, pues lo importante es tener el texto del XML en una variable String y conocer los tags de los cuales queremos obtener la informacion. Para hacer sus pruebas, pueden cambiar la variable de typo Oracle.CLOB a un String y le pasan como parametro una cadea de XML. Con esto se ahorran lo que cueste un API que realiza este procedimiento. Si te sirvio la informacion, deja tu comentario, o te caera una maldicion (en especial los que solo agregan a favoritos y no comentan, ya que solo les interesa el codigo )
Manual de Instalación de un servidor DNS y DHCP en Linux Bienvenidos, en esta ocasión les traigo un Manual para instalar su propio servidor DNS y DHCP en Linux. El presente manual fue desarrollado en debían 6 squeeze, pero puede ser utilizado en cualquier otra distribución basada en debían, tal es el caso de Ubuntu. Screenshots: Este manual lo desarrolle dado que la información que encontré en internet cuando desarrolle este proyecto fue insuficiente y lo que probaba no servia, no mostraba todos los pasos, o estaba mal hecho. El manual contra de 3 partes: 1. Información sobre DNS y DHCP 2. Conceptos de DNS y DHCP explicados, que es cada cosa. 3. Ejemplo con capturas de pantalla paso a paso para crear tu servidor DNS y DHCP. Espero sea de utilidad a muchas personas. No pongo la información aquí dado que el PDF es más cómodo de leer. El Link del PDF es el siguiente, si tienen problemas avisarme: Dentro de la carpeta DNS Y DHCP encontraran el PDF: https://skydrive.live.com/redir.aspx?cid=b86418091cf1bcb5&resid=B86418091CF1BCB5!380&parid=root Si les sirvió de algo la información no se olviden comentar, ya que es un incentivo para seguir compartiendo conocimiento xD. PD: Si les sobran unos puntos son bien recibidos xD!! Mis otros post, ya que van de la mano: Instalacion de Apache Tomcat PHP Mono MySQL desde código Si desean puedo subir más manuales sobre Hibernate, JavaFX 2.x, MPICH, MPIJava, Todo lo relacionado con programación, etc. Saludos no se olviden comentar.