elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: [1] 2
1  Programación / Java / [JavaEE][PDF][2013] Arquitectura Java Sólida en: 23 Marzo 2014, 18:54 pm
Arquitectura Java Sólida es un libro para los que quieren en Java Enterprise Edition (JEE). El libro abarca todos los aspectos fundamentales que el lector debe aprender si desea incursionar en el mundo JEE. En éste libro el lector comenzará desde lo básico, como son las JSP (Java Server Pages), MySQL (código SQL) simulando una tienda de libros. A medida que se avanza en la lectura se aprenderá a utilizar distintos patrones de diseño para una buena arquitectura de aplicaciones.

Como saben, en Java ya no se utiliza el tradicional código SQL dentro de las clases. Para ésto, el lector aprenderá a usar persistencia con el Framework Hibernate, que es un Framework ORM que nos permite usar pool de conexiones y lo más importante hace posible mapear una clase java y convertir sus objetos en entidades que representan una tabla, haciendo que cualquier operación con estas entidades, las veamos reflejadas en nuestra base de datos.

El lector aprenderá también a utilizar el muy famoso y querido Framework Spring, aprenderemos a utilizar los módulos Spring MVC, Spring Security y Spring JDBC. Spring es un excelente framework para todo tipo de aplicaciones, manejando a la perfección los ManagedBeans, permitiéndonos el uso de Inyección de dependencias, que lo hace Spring sin nosotros tener que tocar código. Esto es muy bueno en una aplicación, ya que no tendremos dependencias de ningún tipo en nuestras clases, haciendo nuestra aplicación mucho más escalable y flexible.

El lector también aprenderá a usar JSF que es el Framework estándar de la arquitectura JEE, es un framework MVC para aplicaciones web. Para la vista en JSF, existen muchas librerías como PrimeFaces, que es una extensión de JSF. Nos provee de muchísimos controles (+100) hechos en base a JQuery/Ajax y de increíbles temas como Bootstrap y muchos otros.

Cita del autor:
Citar
El objetivo de este libro es permitir al lector obtener una visión global sobre la plataforma JEE. Adquiriendo los conocimientos necesarios para comenzar a trabajar con los distintos frameworks que soporta (Hibernate, Spring, JSF, etc.). A diferencia de otros libros que se centran en el manejo de un framework en concreto Arquitectura Java Sólida hace hincapié en los principios de ingeniería y patrones de diseño que permiten integrar unos frameworks con otros a la hora de construir una solución enterprise.



Link del libro: Arquitectura Java Sólida
2  Foros Generales / Sugerencias y dudas sobre el Foro / ¿Nuevo sistema de puntuación? en: 20 Marzo 2014, 18:09 pm
Hola, hoy entré y vi esto (A no ser que haya estado desde siempre y yo de animal no lo vi xD), un sistema de puntuación. ¿Cómo funciona? ¿Es como agradecimiento?



Salu2.
3  Programación / PHP / [ORM] ¿Qué ORM usan en PHP? en: 18 Marzo 2014, 13:15 pm
Pues eso, una duda que me ha surgido sobre si los programadores PHP tienen algún framework ORM, porque utilizar código SQL al programar ya quedó en la prehistoria xD.

Por ejemplo, en Java uso Hibernate, ¿cuál sería el equivalente en PHP? Salu2.
4  Foros Generales / Sugerencias y dudas sobre el Foro / Ordenamiento secciones Desktop / Web - Programación en: 7 Noviembre 2013, 00:03 am
Hola, estaba pensando en que quizá se pueda ordenar un poco mejor las secciones de programación.

Por ejemplo, las secciones de lenguajes de programación se pueden dividir para las 2 plataformas de desarrollo, Escritorio (Desktop) - Web, por ejemplo:

Programación Escritorio:

   
  • Java Desktop
  • C#
  • C/C++
  • Python (Script - Desktop)

Programación web:

 
  • PHP
  • Java EE
  • ASP.NET
  • Python (Django, ...)

La sección de programación quedaría mucho más ordenado, y no se mezclarían temas orientados a web con escritorio. Además, así los colaboradores pueden estar en la sección en la que deseen ayudar, o que mejor se les da.


Un saludo.
5  Programación / Java / [JavaFX] VirusTotal Analyzer en: 1 Noviembre 2013, 21:23 pm
Sencilla Aplicación escrita en JavaFX por quien escribe, para analizar archivos en VirusTotal.

Imágenes:

Vista:

Corriendo:

Pestaña Reportes:


Ejecutable:       Ejecutable
Código Fuente: Source
6  Foros Generales / Foro Libre / Santiago Gonzales, 'Genio' de la programación de 14 años. en: 31 Octubre 2013, 15:39 pm


La física es la que en tiempos modernos han elegido las mentes brillantes. Personas prodigiosas, que gracias a vaya uno saber qué cosa extraña en su gestación, tienen capacidades casi inhumanas de almacenar información, calcular y resolver problemas. Miembro de esta elite de afortunados, Santiago González eligió la informática como área de especialización en la que se desarrolla no como una máquina de memorizar fórmulas, sino como un genio de 14 años que maneja 12 lenguajes de programación y que programa hasta en sus sueños. Conoce su historia, sus habilidades y más sobre este futuro dios de la programación.


Las grandes biografías de los grandes pensadores y hombres de ciencia que ha dado la humanidad se remonta siempre a la infancia de los genios. No solamente por una cuestión cronológica, sino porque es en la niñez donde nuestro cerebro está especialmente determinado a aprender todo lo que se nos ponga en frente. Es un factor vital y biológico irrefutable, pero de vez en cuando se sale de sus límites y nos muestra la particularidad de una mente brillante. Santiago González es una mente brillante, y sólo tiene 14 años de edad. Con una personalidad bastante madura para una persona de su edad, a Santiago González lo emociona el conocimiento y la belleza detrás de la construcción de soluciones para todo tipo problemas, definición de la inteligencia por antonomasia. Será por eso que a partir de sus 2 años de edad comenzó a manifestar que no era igual a los demás de su edad, sino que era un genio al cual había que motivar, un niño prodigio y un “verdadero nerd”, como el mismo se describe

Santiago Gonzales tiene 14 años y cursa en la Colorado School of the Mines, una institución acostumbrada a tratar con mentes especiales de niños prodigios, aunque la de Santiago González los tiene asombrados. Actualmente tiene 14 y cursa con compañeros que tienen arriba de 18 para graduarse en ciencias de la computación, pero probablemente a los 23 estará completando su PhD en la misma rama, como el mismo ya tiene programado hacer en la Universidad de Standford. Hablando de programación, mientras que yo me peleo con las introducciones en video a Python a mis 27,  este niño de 14 es fluente en 12 lenguajes de programación, que escribe como si de su lengua natal se tratara. Además de tener una desesperación existencial por aprender más de cualquier cosa todo el tiempo, Santiago dice que cuando no puede solucionar un bug en sus programas, se acuesta a dormir pensando en ellos y sueña que programa. Muchas veces, al despertar, la solución está ahí, en su cabeza y lista para deslizarse a la pantalla.


Entre sus increíbles logros para la edad, Santiago ya suma más de 15 aplicaciones para iOS publicadas en el iTunes Store, muchas de las cuales son muy bien reputadas. Parte de la serie Prodigios de THNKR, mientras Santiago dibuja poemas informáticos en Objective-C y sueña con trabajar algún día para Apple, sus padres, compañeros y tutores continúan anonadados ante su inteligencia extraordinaria. Tanto es así, que actualmente está participando de un proyecto sobre eficiencia energética llevado adelante por la jerarquía académica de su colegio. Este tipo de ocupaciones no le dejan tiempo alguno para andar ocupándose de la vestimenta, de otros niños de su edad y de las novias, a las que considera una pérdida de tiempo. Habrá que ver qué tipo de destino le espera a este genio en ciernes, de quien no podemos más que demostrar admiración y un poquito de sana envidia. Ah. Y si yo fuera Tim Cook, no dudaría en ficharlo ya mismo.


Fuente: www.neoteo.com
7  Foros Generales / Sugerencias y dudas sobre el Foro / ¿No puedes ver imágenes en los posts si no te logueas? en: 28 Octubre 2013, 06:05 am
Pues eso, si no me logueo no puedo ver las imágenes de los posts. Si me logueo sí las puedo ver. ¿Es normal?
8  Programación / Java / [Source] [JavaFX] [MySQL] - FXAgenda en: 28 Octubre 2013, 03:19 am
Buenas noches con todos.

Estoy practicando con JavaFX, la verdad me parece un excelente framework para RAD (desarrollo rapido de aplicaciones). Es un framework muy completo y por supuesto, multiplataforma.

JavaFX es la nueva apuesta de Oracle (Aunque el proyecto fue inicialmente de Sun), para el desarrollo de GUI, y la verdad fue un buen movimiento. JavaFX ha venido para reemplazar a Swing a mediano - largo plazo como lo dice Oracle, y creo que no tardará mucho. Gran cantidad de programadores están migrando a JavaFX, por su flexibilidad e increible potencia. JavaFX puede ser usado en Desktop, web y Móvil.


FX AGENDA:


FXAgenda es una agenda virtual. Puede guardar los contactos que se desee. Los contactos serán guardados en una base de datos.

Características:


  • Cuando se lance la aplicación la primera vez, pedirá configurar el root y pass de su base de datos.
  • Cuando se lance la aplicación por primera vez, creará una carpeta en: Home/AppData/Local/, llamada 'agenda'.
  • En la carpeta agenda se guardarán las configuraciones de  la cuenta de usuario y de la base de datos: userdata.txt y database.txt
  • Si se elimina el archivo userdata.txt lo creará automáticamente al iniciar la aplicación con el usario y contraseña por defecto.
  • Si se elimina el archivo database.txt al iniciar la aplicación pedirá el root y pass de su base de datos, tal y como la primera vez que se inicia la aplicación.
  • Se puede añadir contactos, modificar y eliminar.
  • Para añadir un contacto se tiene que ir al menú 'Archivo' y elegir la opción 'Nuevo'.
  • El boton Guardar se deshabilitará mientras no se ingresen todos los datos.
  • Para modificar un contacto se da doble clic en la celda a modificar, y se establece el nuevo valor. Se modificará autom. la misma celda en la Base de datos.
  • Para eliminar un contacto, se puede dar clic derecho en la fila de la tabla y elegir la opción 'eliminar', o se puede ir al menú Editar -> eliminar.
  • Si se quiere ver solo la tabla, presionar Cancelar.
  • Para salir, simplemente hay que ir al menú Archivo -> Salir.
Imágenes:

Login:



Agregar nuevo contacto:



Menu Editar:



Establecer nuevo usuario y contraseña:



Establecer nueva config. de la base de datos:



Eliminar contacto:



Modificar contacto:



Acerca del autor:



Base de datos (MySql):

Código:
CREATE DATABASE contactos;


CREATE TABLE contacto(
ID mediumint(100) not null auto_increment,
Nombre varchar(50) not null, Apellido varchar(50) not null,
FNacimiento varchar(14) not null, Telefono varchar(20) not null,
Email varchar(50) not null, Direccion varchar(80) not null,
primarykey(ID));


NOTA: El usuario y contraseña por defecto son: user - pass. Puede cambiarse en el menú Editar.


Links actualizados:

Ejecutable:     FXAgenda

Código fuente: Source



Espero les sirva de algo. Saludos...
9  Programación / .NET (C#, VB.NET, ASP) / [WPF][ESP] Manual - +350 pgs. en: 23 Octubre 2013, 03:22 am
Les dejo un manual en español de WPF. Dice básico pero lo veo bastante bueno.

Manual WPF
10  Programación / .NET (C#, VB.NET, ASP) / [WPF][C#] Programar los eventos en una clase Controladora. en: 22 Octubre 2013, 19:49 pm
Buen día.

Este es mi primer programita en C#, y la verdad no entiendo muchas cosas. Espero me puedan echar un cable  :xD Por cierto, uso Visual Studio Express 2013, que está muy bonita xD

El programita es sencillo, solo registrará los datos de un trabajador en una tabla. Tengo las siguientes clases:

  • Clase Trabajador (pojo). Este será el prototipo del trabajador, todos se crearán a partir de esta pojo.
  • Clase MainWindow (Formulario)
  • Clase Controller (Controlador del programa)
  • Clase RegistrarTrabajador (Modelo del programa)
  • Clase Conexion (Complemento del Modelo).

La idea es sencilla, estoy utilizando el patrón MVC, para conectar el Controlador con la vista y con el modelo. Ahora, el problema que tengo es el siguiente:

En Java, basta con pasarse la referencia  del Controlador, al componente que efectuará el evento. bastaría con hacer:

Código
  1. public void setControlador(Controller controlador)
  2. {
  3.    btnRegistrar.addActionListener(controlador);
  4.    btnNuevo.addActionListener(controlador);
  5.    btnSalir.addActionListener(controlador);
  6.  }
  7.  
Luego, en la clase Controller:

Código
  1.  
  2. public class Controller implements ActionListener {
  3.  
  4. private Formulario vista;
  5. private Modelo modelo;
  6.  
  7.  public Controller (Formulario vista, Modelo modelo)
  8.   {
  9.      this.vista = vista;
  10.      this.modelo = modelo;
  11.   }
  12.  
  13. @Override
  14.  actionPerformed(ActionEvent e)
  15.   {
  16.      // eventos
  17.   }
  18.  
  19. }
  20.  


¿Cómo puedo lograr lo mismo en C#?


Clases Trabajador (Pojo), Controller (Controlador), RegistrarTrabajador (Modelo), Formulario :

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace RegistroDeUsuarios.pojo
  8. {
  9.    public class Trabajador
  10.    {
  11.        private string primerNombre;
  12.        private string segundoNombre;
  13.        private string primerApellido;
  14.        private string segundoApellido;
  15.        private string rangoTrabajador;
  16.        private string fechaNacimiento;
  17.  
  18.        // setters
  19.  
  20.        public void setPrimerNombre(string primerNombre)
  21.        {
  22.            this.primerNombre = primerNombre;
  23.        }
  24.        public void setSegundoNombre(string segundoNombre)
  25.        {
  26.            this.segundoNombre = segundoNombre;
  27.        }
  28.        public void setPrimerApellido(string primerApellido)
  29.        {
  30.            this.primerApellido = primerApellido;
  31.        }
  32.        public void setSegundoApellido(string segundoApellido)
  33.        {
  34.            this.segundoApellido = segundoApellido;
  35.        }
  36.        public void setRangoTrabajador(string rangoTrabajador)
  37.        {
  38.            this.rangoTrabajador = rangoTrabajador;
  39.        }
  40.        public void setFechaNacimiento(string fechaNacimiento)
  41.        {
  42.            this.fechaNacimiento = fechaNacimiento;
  43.        }
  44.  
  45.        // getters
  46.  
  47.        public string getPrimerNombre()
  48.        {
  49.            return this.primerNombre;
  50.        }
  51.        public string getSegundoNombre()
  52.        {
  53.            return this.segundoNombre;
  54.        }
  55.        public string getPrimerApellido()
  56.        {
  57.            return this.primerApellido;
  58.        }
  59.        public string getSegundoApellido()
  60.        {
  61.            return this.segundoApellido;
  62.        }
  63.        public string getRangoTrabajador()
  64.        {
  65.            return this.rangoTrabajador;
  66.        }
  67.        public string getFechaNacimiento()
  68.        {
  69.            return this.fechaNacimiento;
  70.        }
  71.  
  72.    }
  73. }
  74.  

Clase Controller
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using RegistroDeUsuarios.pojo;
  8.  
  9.  
  10. namespace RegistroDeUsuarios
  11. {
  12.  
  13.   public class Controller
  14.    {
  15.        private MainWindow vista;
  16.        private RegistrarTrabajador modelo;
  17.  
  18.  
  19.       public Controller()
  20.        {
  21.  
  22.        }
  23.        public Controller(MainWindow vista, RegistrarTrabajador modelo)
  24.        {
  25.            this.vista = vista;
  26.            this.modelo = modelo;
  27.  
  28.        }
  29.  
  30.  
  31.       public void btnRegistrar_Click(Object sender, RoutedEventArgs e)
  32.       {
  33.           Trabajador trabajador = new Trabajador();
  34.           trabajador.setPrimerNombre(vista.txtPrimerNombre.Text);
  35.           trabajador.setSegundoNombre(vista.txtSegundoNombre.Text);
  36.           trabajador.setPrimerApellido(vista.txtPrimerApellido.Text);
  37.           trabajador.setSegundoApellido(vista.txtSegundoApellido.Text);
  38.           trabajador.setRangoTrabajador(vista.cboRangoTrabajador.SelectedItem.ToString());
  39.           trabajador.setFechaNacimiento(vista.txtFechaNacimiento.Text);
  40.           modelo.registrarTrabajador(trabajador);
  41.       }
  42.       public void btnNuevo_Click(Object sender, RoutedEventArgs e)
  43.       {
  44.           vista.clean();
  45.       }
  46.       public void btnSalir_Click(Object sender, RoutedEventArgs e)
  47.       {
  48.           //Application.Current.Shutdown();
  49.       }
  50.    }
  51. }
  52.  


Clase RegistrarTrabajador:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MySql.Data.MySqlClient;
  7. using RegistroDeUsuarios.pojo;
  8.  
  9. namespace RegistroDeUsuarios
  10. {
  11.    public class RegistrarTrabajador
  12.    {
  13.        public static MySqlConnection conexion = new MySqlConnection();
  14.        public static MySqlCommand comando = new MySqlCommand();
  15.        public static string CadenaDeConexion;
  16.  
  17.        public void registrarTrabajador(Trabajador trabajador)
  18.        {
  19.            // Aquí se llevara a cabo la conexion
  20.            CadenaDeConexion = "Server=localhost;"
  21.                                + "Port=3307;"
  22.                                + "Database=mysql_ifxperu;"
  23.                                + "Uid=root;"
  24.                                + "Password=";
  25.  
  26.            try
  27.            {
  28.                conexion.ConnectionString = CadenaDeConexion;
  29.            }
  30.            catch (Exception ex)
  31.            {
  32.                Console.WriteLine(ex.Message);
  33.            }
  34.  
  35.            try
  36.            {
  37.                // Abrimos la conexión
  38.                conexion.Open();
  39.                // Definimos nuestro Query
  40.                string query = "insert into empleados VALUES('"+trabajador.getPrimerNombre()+"','"+trabajador.getSegundoNombre()+"','"+trabajador.getSegundoApellido()+"','"+
  41.                    trabajador.getSegundoApellido()+"','"+trabajador.getRangoTrabajador()+"','"+trabajador.getFechaNacimiento()+"')";
  42.                // Establecemos cuál será la conexión
  43.                comando.Connection = conexion;
  44.                // Determinamos el comando [ nuestro query]
  45.                comando.CommandText = query; //Se le asigna la consulta
  46.                // Asignamos al objeto MySqlReader la ejecución del comando
  47.                // En otras palabras, el resultado de la consulta [query]
  48.                // Se guardará en el MySqlReader
  49.                comando.ExecuteNonQuery();
  50.                MessageBox.Show("Alta del empleado satisfactoria.");
  51.            }
  52.            catch (Exception ex)
  53.            {
  54.                Console.WriteLine(ex.Message);
  55.            }
  56.            finally {
  57.                conexion.Close();
  58.            }
  59.        }
  60.    }
  61. }
  62.  


Clase Formulario
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15.  
  16. namespace RegistroDeUsuarios
  17. {
  18.  
  19.    public partial class MainWindow : Window
  20.    {
  21.        public MainWindow()
  22.        {
  23.            InitializeComponent();
  24.            cboRangoTrabajador.Items.Add("Administrador");
  25.            cboRangoTrabajador.Items.Add("Vendedor");
  26.            cboRangoTrabajador.Items.Add("Contador");
  27.            cboRangoTrabajador.Items.Add("Tecnico Mantenimiento");
  28.            cboRangoTrabajador.Items.Add("Programador");
  29.            cboRangoTrabajador.Items.Add("Analista");
  30.            cboRangoTrabajador.SelectedIndex = 0;
  31.        }
  32.  
  33.        public void setControlador(Controller controlador)
  34.        {
  35.            controlador.btnRegistrar_Click(controlador,new RoutedEventArgs());
  36.            controlador.btnNuevo_Click(controlador,new RoutedEventArgs());
  37.            controlador.btnSalir_Click(controlador,new RoutedEventArgs());
  38.        }
  39.  
  40.        public void clean()
  41.        {
  42.            txtPrimerNombre.Clear();
  43.            txtSegundoNombre.Clear();
  44.            txtPrimerApellido.Clear();
  45.            txtSegundoApellido.Clear();
  46.            txtFechaNacimiento.Clear();
  47.            cboRangoTrabajador.SelectedItem = "Administrador";
  48.            txtPrimerNombre.Focus();
  49.        }
  50.  
  51.  
  52.    }
  53. }
  54.  


*** UPDATE ***

He creado una clase principal, que sustituye al Main que genera WPF.

Código
  1. using System.Windows.Media.Imaging;
  2. using System.Windows.Media.Media3D;
  3. using System.Windows.Media.TextFormatting;
  4. using System.Windows.Navigation;
  5. using System.Windows.Shapes;
  6. using System.Windows.Shell;
  7.  
  8. namespace RegistroDeUsuarios
  9. {
  10.    class Principal
  11.    {
  12.        // <summary>
  13.        /// Application Entry Point.
  14.        /// </summary>
  15.        [System.STAThreadAttribute()]
  16.        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  17.        public static void Main()
  18.        {
  19.  
  20.            MainWindow vista = new MainWindow();
  21.            RegistrarTrabajador modelo = new RegistrarTrabajador();
  22.            Controller control = new Controller(vista, modelo);
  23.            vista.setControlador(control);
  24.            MessageBox.Show("Hola");
  25.            RegistroDeUsuarios.App app = new RegistroDeUsuarios.App();
  26.            app.InitializeComponent();
  27.            app.Run();
  28.        }
  29.  
  30.    }
  31. }
  32.  


Otra duda, quiero colocar un método en el Formulario, para arrancar la aplicación a demanda. Esto porque en el Main crearé los objetos MainWindow y RegistrarTrabajador, para pasárselos al Controller, para que se asocie a las 2 clases, y el objeto Controller pasárselo por medio de setControlador(Controller controlador) al Formulario. ¿Cómo haría?



Muchas gracias!
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines