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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 59
151  Programación / Java / Re: mostrar nombres mediante id_nom en jComboBox en: 8 Junio 2017, 17:18 pm
No entiendo del todo tu pregunta...
Entiendo que tienes la "id" de un objeto y quieres poder acceder al objeto con su id?... osea que tu pregunta no tiene nada que ver con el ComboBox?.

Asumiré que es lo que dije anteriormente y te dejare un código simple que seguramente podrás entender:

Código
  1. public class Employee {
  2.    private static Map<Integer, Employee> EMPLOYEES = new HashMap();
  3.    private int id;
  4.    private String name;
  5.    private String department;
  6.  
  7.    public Employee(int id, String name, String department) {
  8.        this.id = id;
  9.        this.name = name;
  10.        this.department = department;
  11.        EMPLOYEES.put(this.id, this);
  12.    }
  13.  
  14.    public static Employee getEmployeeById(int id) {
  15.        return EMPLOYEES.get(id);
  16.    }
  17.  
  18.    public String toString() {
  19.        return "Employee(" + id + "," + name + "," + department + ")";
  20.    }
  21.  
  22.    public static void main(String[] args) {
  23.        new Employee(1, "a", "A");
  24.        new Employee(2, "b", "B");
  25.        new Employee(3, "c", "C");
  26.  
  27.        Employee employee = Employee.getEmployeeById(3);
  28.        System.out.println(employee);
  29.    }  
  30. }
  31.  

Si te das cuenta creo tres empleados en cuyo constructor guarda en un map (diccionario) la id y el employee mismo. De esta forma yo podre acceder al empleado poniendo su id. (Cosa que hago en el main).
152  Programación / Java / Re: Guardar ArrayList en archivo txt en: 8 Junio 2017, 17:04 pm
Tienes que serializar el arraylist y posteriormente guardarlo en un archivo.

(Normalmente me tomaría mas tiempo explicándolo, pero seguramente encontraras info utilizando el buscador de este foro {Yo ya he contestado dos el mes anterior}).

De igual forma aquí tienes un ejemplo que te podría ayudar:

Código
  1. public class Employee implements Serializable {  
  2.    int id;
  3.    String name;
  4.    String department;
  5.  
  6.    public Employee(int id, String name, String department) {
  7.        this.id = id;
  8.        this.name = name;
  9.        this.department = department;
  10.    }
  11.  
  12.    public String toString() {
  13.        return "Employee(" + id + "," + name + "," + department + ")";
  14.    }
  15.  
  16.    public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
  17.        ArrayList<Employee> employees = new ArrayList<>();
  18.        employees.add(new Employee(0, "Jose", "Departamento A"));
  19.        employees.add(new Employee(1, "Alex", "Departamento B"));
  20.        employees.add(new Employee(2, "Ignacio", "Departamento C"));
  21.  
  22.        FileOutputStream fout=new FileOutputStream("C:\\Users\\Nacho\\Desktop\\output.txt");  
  23.        ObjectOutputStream out= new ObjectOutputStream(fout);  
  24.        out.writeObject(employees);
  25.        out.close();
  26.  
  27.  
  28.        FileInputStream fin = new FileInputStream("C:\\Users\\Nacho\\Desktop\\output.txt");
  29.        ObjectInputStream ois = new ObjectInputStream(fin);
  30.        ArrayList<Employee> employees2 = (ArrayList<Employee>)ois.readObject();
  31.        for(Employee employee : employees2) System.out.println(employee);
  32.    }  
  33. }

Básicamente lo que hago ahí es generar una clase Employee con tres atributos, luego en el main genero un ArrayList con tres Employees. Posterior a esto guardo los datos serializados en un archivo .txt el cual leo y muestro.

PD: El archivo resultante te quedara como esto:

Código:
aced 0005 7372 0013 6a61 7661 2e75 7469
6c2e 4172 7261 794c 6973 7478 81d2 1d99
c761 9d03 0001 4900 0473 697a 6578 7000
0000 0377 0400 0000 0373 7200 1165 6c68
6163 6b65 722e 456d 706c 6f79 6565 9c12
66fb 27b3 a77a 0200 0349 0002 6964 4c00
0a64 6570 6172 746d 656e 7474 0012 4c6a
6176 612f 6c61 6e67 2f53 7472 696e 673b
4c00 046e 616d 6571 007e 0003 7870 0000
0000 7400 0e44 6570 6172 7461 6d65 6e74
6f20 4174 0004 4a6f 7365 7371 007e 0002
0000 0001 7400 0e44 6570 6172 7461 6d65
6e74 6f20 4274 0004 416c 6578 7371 007e
0002 0000 0002 7400 0e44 6570 6172 7461
6d65 6e74 6f20 4374 0007 4967 6e61 6369
6f78
153  Foros Generales / Foro Libre / Re: Vivero de talento y desarrollo conjunto en: 7 Junio 2017, 15:11 pm
Escribo mas que nada para recomendarte un par de cosas.

Inicie mi empresa de desarrollo hace un poco mas de dos años atrás, y en su momento introduje a distintos "amigos" quienes me metieron en algunos problemas y también me di cuenta que el tema de los pagos... puede resultar complicado, así que por eso creo que es mejor que tengas en consideración algunas cosas:

1. No puedes pagar respecto al % de código por tres razones:
        a) Existen cosas que no son código, por ejemplo, configurar el hosting o los correos.
        b) No es lo mismo 1000 lineas de código de HTML o CSS que 1000 lineas de PHP
        c) En caso de usar un framework el originador del proyecto tendrá un muchas lineas a su favor.
       (Seguramente hay mas cosas pero con estas ya te darás cuenta del problema.)

2. No es seguro mantener un grupo abierto sin ningún tipo de compromiso trabajando por dinero. En muchas oportunidades se presentaran 2 o 3 que te dirán "yo lo puedo hacer" y se comprometerán a una fecha de entrega... pero es muy probable que no logren cumplir esa fecha o simplemente no hagan nada en el proyecto. Un cliente no te esperara... te lo aseguro.

3. La confianza es un pilar fundamental en los trabajos pagados en conjunto, y no quiero dudar de ti ni de nadie pero ya me han estafado. No lo digo por que tu puedas o no recibir un pago y luego no entregarlo, sino mas bien porque puede ser que el cliente no te pague y luego tu como "encargado" del proyecto quedaras en deuda con tu equipo.

4. Los impuestos....

5. Los proyectos pequeños no valen la pena... están bien para empezar pero mas temprano que tarde necesitaras proyectos grandes... y los proyectos grandes normalmente te exigen posee una empresa legal o al menos mantener una documentación de todos tus asociados con sus respectivos estudios.

Tengo un par de cosas mas que decir, pero ya me debes seguir la idea...

Algunas experiencias que me gustaría transmitirte:
• Yo empece mi empresa en este foro, invitando a un usuario del mismo a participar... no cumplió y en su momento significo muchas horas de sueño perdidas.
• Un usuario de este foro me recomendó un cliente. Dicho cliente necesitaba un programa simple que no fuera web. Me dijo que tenia problemas para pagarme e incluso me paso sus datos de acceso para verificar que fallaba. Yo me negué a pesar el producto pero mi amigo dijo que "parecía de confianza"... pues... sigo esperando el dinero (1 o 2 años ya).
• Contrate a un amigo quien después de sentirse frustrado por la dificultad de un proyecto nos abandono sin decir nada.

PD: Mi empresa es muy similar a tu idea, puesto que pago a todos la misma cantidad (incluyéndome). La diferencia es que el trabajo se reparte de tal forma para que todos merezcan su parte. (aunque siempre termino haciendo yo lo mas complicado...  :¬¬, pero los quiero de igual forma  :-[)
154  Foros Generales / Foro Libre / Re: Servicios para resolver Google-reCaptcha en: 7 Junio 2017, 10:46 am
¿¡¿Qué es "Estoy scrapeando una página web"?!?


Se refiere a hacer scraping: https://es.wikipedia.org/wiki/Web_scraping



Respecto al tema del foro, te diría que el scraping es un acto "ilegal" pero no lo es (o google estaría en problemas) pero si es un acto ilegal el robar identidades para utilizarlas en distintos registros. - Y teniendo en cuenta que intentas sobrepasar un captcha seguramente estés incumpliendo los términos y condiciones del sitio web al cual estas "atacando" por tanto no es adecuado tu  mensaje (incumple las reglas del foro)... ahora, puedes hacer lo que hacen todos: Modifica tu mensaje y pon "estoy haciendo un estudio sobre.... en mi propia computadora..."   :xD :xD. - Esto ultimo fue para joder...

155  Comunicaciones / Mensajería / Re: ¿Qué hago para tener Whatsapp? en: 6 Junio 2017, 12:44 pm
Hola!

No sé si te será de utilidad, pero probaste con WhatsApp Web?

https://web.whatsapp.com/

Saludos!

Iba a escribir diciendo que no podias usar whatsapp web si no tenias whatsapp en el telefono... pero luego me di cuenta que realmente es muuuuy buena idea.

Asocia el telefono a whatsapp web con tu computadora del trabajo y luego deja el telefono en tu casa (o cualquier lugar con buena señal). Con eso ya tienes whatsapp en la computadora sin necesidad de liarte con virtualizaciones.

Ahora si requieres que muchos usuarios tengan acceso a ese único WhatsApp ... pues creo que es mas complicado.
156  Programación / Java / Re: [CURSO] Programación en Java en: 6 Junio 2017, 09:48 am
Inputs por Consola - Scanner

Un sistema o programa normalmente posee una entrada un proceso y una salida. Hasta ahora solo hemos generado salidas mediante un proceso (ya sea creando variables o simplemente imprimiendo por consola) pero no hemos interactuado en ningún momento con el usuario.

Una forma de interactuar con el usuario es que este entregue parámetros de entrada, los cuales pueden ser ingresados por la consola de comandos mientras está ejecutándose nuestro programa. Existen muchas formas de hacer esto, pero en este tutorial utilizaremos la clase Scanner.

Scanner es una clase (modelo) que posee los métodos (funciones) que nos permiten ingresar datos de entrada a nuestro programa. En este caso utilizaremos un conjunto de métodos que nos permitirán ingresar datos por teclado.

Importación, Declaración e Inicialización de Scanner

Primero: Como te indique en el tutorial “Introducción a Java y la Programación Orientada a Objetos(POO)” Una clase es un modelo/plantilla que nos permite generar objetos. Nosotros no podremos acceder a las funcionalidades de Scanner sin previamente crear un objeto Scanner a partir de su clase. Esto puede que te suene a chino, y no te preocupes, a mí me sonó a latín cuando lo hice por primera vez. En siguientes tutoriales explicare de mejor forma que es una clase y objeto, pero por ahora solo escribe lo siguiente:

Código
  1. Scanner scanner = new Scanner(System.in);

Te explicare brevemente de que trata todo esto, no te preocupes si no lo entiendes ya que en tutoriales futuros lo explicare todo más detalladamente:

Lo que estamos haciendo es crear una variable de tipo Scanner que la llamamos coincidentemente scanner (aunque podría haberle puesto cualquier nombre), esto es exactamente lo mismo que hacemos cuando creamos cualquier tipo de variable:

Código
  1. Scanner scanner; // Esto es lo mismo
  2. String string; // Que esto...

(Recuerda que el nombre de la variable podría ser cualquiera, en este caso la llamamos scanner)

Luego en la misma línea inicialice la variable scanner entregándole como valor un objeto Scanner que recibe como parámetro de entrada “System.in”:

Código
  1. Scanner scanner = new Scanner(System.in);
  2. // Declaro scanner = Inicializo scanner


¿Recuerdas el primer tutorial donde te hablé de la clase y objeto perro y te dije que recibía como parámetro de entrada un nombre, color y sexo? Pues esto es lo mismo: Tenemos clase Scanner y recibe como parámetro “System.in”.

Seguramente te habrás dado cuenta que tu programa tira error: “Cannot find symbol: class Scanner” Esto ocurre porque Java no sabe dónde buscar la clase Scanner para poder utilizarla. Para solucionar esto tienes que importar al clase Scanner escribiendo justo debajo de “package nombre.proyecto” lo siguiente:

Código
  1. import java.util.Scanner;

Dando como resultado el siguiente código:

Código
  1. package tutorial.pkg9;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Tutorial9 {
  6.    public static void main(String[] args) {
  7.        Scanner scanner = new Scanner(System.in);
  8.    }
  9. }

Recuerda que todo aquello que este entre /* */ o después de // puedes borrarlo.

Entonces lo que hicimos fue:

1.   Importar java.util.Scanner para hacer uso de la clase Scanner.
2.   Declarar la variable scanner de tipo Scanner.
3.   Inicializar la variable scanner creando un objeto de tipo Scanner.

Si en este puto puedes ejecutar tu programa y no pasa ningún error (ósea, no pasa nada de nada) tu programa está bien. Si no lo puedes hacer intenta buscar tu error y en caso de no encontrarlo puedes preguntarme por mensaje privado o mejor, escribir un tema con tu pregunta y tanto yo como otros compañeros estaremos felices de ayudarte.

Métodos de Scanner

Ya tenemos nuestro objeto de Scanner inicializado y funcionando, ahora toca utilizarlo para asignar un valor a una variable. Para esto disponemos de muchos métodos (funcionalidades) distintos, los cuales puedes buscar con más detalle en la API de Java. Pero en este tutorial abordaremos 3:

Código
  1. scanner.nextInt();      // Para numeros enteros int
  2. scanner.nextFloat();    // Para numeros decimales float
  3. scanner.nextLine();     // Para palabras (String)

(todos los métodos/funciones han de finalizar con paréntesis)

PRIMER EJEMPLO

Como primera prueba utilizaremos scanner para pedirle dos números enteros al usuario los cuales posteriormente sumaremos:

Código
  1. Scanner scanner = new Scanner(System.in);
  2. int a;
  3. int b;
  4. a = scanner.nextInt();
  5. b = scanner.nextInt();
  6. System.out.println(a + b);

Lo que acabamos de hacer fue declarar dos variables numéricas llamadas “a” y “b” luego las inicializamos haciendo uso del método nextInt() y posterior a esto imprimimos la suma de a y b.

(Para utilizar el método de un objeto tienes que poner el nombre de la variable, luego un “.” (sin las comillas) y posteriormente el método) (recuerda que los métodos finalizan con un paréntesis.)

Si ejecutamos el programa veras que tan solo al empezar se quedara parado. Esto es porque el programa estará en espera a que ingreses un valor numérico y posterior a esto presiones enter. Esto sucederá dos veces debido a que utilizamos scanner.nextInt() dos veces.

Si lo hiciste correctamente al ingresar dos números veras el resultado de la suma de estos y posteriormente el programa finalizara. (Recuerda ingresar solo números o el programa podrá lanzar error)

Ahora modificaremos nuestro programa para que sea más intuitivo agregando un mensaje justo antes de cada número solicitando que ingresen un valor:

Código
  1. package tutorial.pkg9;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Tutorial9 {
  6.    public static void main(String[] args) {
  7.        Scanner scanner = new Scanner(System.in);
  8.        int a;
  9.        int b;
  10.        System.out.print("Ingresa el primer numero: ");
  11.        a = scanner.nextInt();
  12.        System.out.print("Ingresa el segundo numero: ");
  13.        b = scanner.nextInt();
  14.        System.out.println(a + b);
  15.    }
  16. }

(Hice uso de system.out.print para que el número se ingresara en la misma línea)

SEGUNDO EJEMPLO

Para el segundo ejemplo borraremos todo lo que está debajo de la inicialización de Scanner y haremos lo siguiente:

Código
  1. Scanner scanner = new Scanner(System.in);
  2. System.out.print("Ingresa tu nombre: ");
  3. String nombre = scanner.nextLine();
  4. System.out.print("Ingresa tu edad: ");
  5. int edad = scanner.nextInt();
  6. System.out.print("Ingresa tu estatura: ");
  7. float estatura = scanner.nextFloat();
  8. System.out.println("Tu nombre es: " + nombre);
  9. System.out.println("Tu edad es: " + edad);
  10. System.out.println("Tu estatura es: " + estatura);

Ahora analicemos lo que acabamos de hacer en orden:

1.   Declaramos e inicializamos scanner
2.   Solicitamos el nombre del usuario
3.   Declaramos la variable nombre de tipo String y utilizamos el método nextLine para que el usuario ingresara un String (su nombre).
4.   Solicitamos la edad del usuario
5.   Declaramos la variable edad de tipo int y utilizamos el método nextInt para que el usuario ingresara un numero entero (su edad)
6.   Solicitamos la estatura del usuario
7.   Inicializamos la variable estatura de tipo float y le asigamos con el método nextFloat un valor decimal (su estatura). // Este ha de introducirse con una “,” como separador decimal
8.   Finalizamos imprimiendo todos los valores ingresados por el usuario.

En este ejemplo hicimos uso de tres métodos de Scanner y los utilizamos para solicitar al usuario ingresar valores desde el teclado.

NOTAS IMPORTANTES

A modo de recordatorio te pongo la siguiente lista:
1.   Para utilizar Scanner tienes que importar Scanner.
2.   Para utilizar Scanner tienes que crear un objeto a partir de la clase Scanner.
3.   Scanner dispone de distintos métodos que puedes utilizar para ingresar datos por teclado.

OTRAS OBSERVACIONES

Algunas observaciones sobre Scanner:
1.   Puedes ingresar valores no String separados por un espacio sin necesidad de apretar enter.
2.   Puedes inicializar una variable directamente haciendo uso de Scanner

ERROR DE SCANNER

Scanner posee un “bug” que sucede al realizar lo siguiente:

Código
  1. System.out.print("Numero: ");
  2. scanner.nextInt();
  3. System.out.print("Otro String: ");
  4. scanner.nextLine();
  5. scanner.nextLine();

Si ejecutas el código anterior te darás cuenta que este finaliza apenas ingreses el primer número. Esto es debido a que nextLine() toma por valor el “Enter” que ingresas apenas terminas de ingresar el número. Una forma de solucionarlo es agregando un nextLine antes del nextLine real:

Código
  1. System.out.print("Numero: ");
  2. scanner.nextInt();
  3. System.out.print("Otro String: ");
  4. scanner.nextLine();
  5. scanner.nextLine();

Eso es todo por ahora. En un futuro te explicare otra forma de ingresar datos por teclados sin necesidad de Scanner pero por ahora esta es la mejor opción (y en particular me gusta mucho Scanner por su simpleza). Nos vemos en el siguiente tutorial.

RECURSOS ASOCIADOS A ESTE TUTORIAL:

  • Video Tutorial – Concatenación
  • Tutorial descargable .DOCX


RECURSOS COMPLEMENTARIOS:

No existen recursos complementarios para este artículo.
157  Programación / Java / Re: [CURSO] Programación en Java en: 4 Junio 2017, 09:26 am
Concatenación

La concatenación es un tema simple pero útil. No lo explique en el tutorial de impresión de mensajes ya que era necesario explicar otros temas antes.

La concatenación es simplemente unir dos mensajes en uno, y se hace simplemente utilizando el carácter “+”. Un ejemplo de esto es el siguiente:

Código
  1. System.out.println("Este es el primer mensaje " + "Este es el segundo");

El resultado sería el siguiente:

Código:
Este es el primer mensaje Este es el Segundo

Puedes utilizar la concatenación cuantas veces quieras:

Código
  1. System.out.println("a" + "b" + "c" + "d" + "e");

Y evidentemente también lo puedes hacer sin la necesidad de un System.out.println

Código
  1. String cadena = "a"+"b"+"c";

También puedes combinarlo con números y variables:

Código
  1. String mensaje = "El valor de la variable \"numero\" es:";
  2. int numero = 55;
  3. System.out.println(mensaje + " " + numero);
  4.  

Esto daría como resultado lo siguiente:

Código:
El valor de la variable "numero" es: 55

En resumen, puedes concatenar cualquier variable o constante numérica o String que se te ocurra siempre y cuando utilices el símbolo “+” sin las comillas.

Ahora la problemática esta en como diferenciamos una suma entre dos variables numéricas versus una concatenación entre las mismas:

Código
  1. int a = 4;
  2. int b = 6;
  3. System.out.println(a + b);
  4.  
¿Cuál crees que es el resultado?:
Opción A:Opción B:
1046

Si tu respuesta fue la Opción A: 10, estas en lo correcto. Siempre que exista un signo más entre dos números se realizara una suma.

Y ahora en este caso:

Código
  1. int a = 4;
  2. int b = 6;
  3. System.out.println("" + a + b);

¿Cuál crees que fue el resultado?

Si tu respuesta fue 10, lamento decirte que te equivocaste. Y es porque omití decirte dos cosas muy importantes:

  • La concatenación se lee de izquierda a derecha.
  • La concatenación entre un String y un número da como resultado un String, entre dos números un número y entre dos String un Strnig.

Entonces lo que está pasando en el caso anterior es lo siguiente:

1.   Concatenar “” y 4: El resultado es 4 (Un String) // Una palabra vacía es un String siempre y cuando tenga las comillas.
2.   Concatenar un “4” y un 6: El resultado es 46 (Un String) // Recuerda, entre un String y un numero el valor es un String.

Con lo anterior ya deberías poder dominar las concatenaciones perfectamente además de poder convertir un número a un String.

RECURSOS ASOCIADOS A ESTE TUTORIAL:
  • Video Tutorial – Concatenación
  • Tutorial descargable .DOCX

RECURSOS COMPLEMENTARIOS:
No existen recursos complementarios para este artículo.
158  Foros Generales / Foro Libre / Re: [Opinen] ¿Qué es un hacker? en: 4 Junio 2017, 08:47 am
Esto creo que se ha hablado mucho en el foro, pero hasta ahora la frase que mas recuerdo es la que me dijo @synthesize en su momento:

Citar
Todos nacemos siendo hackers. Desde bebes, aprendemos, investigamos, indagamos, probamos las cosas, intentamos romperlas e intentamos saber como funcionan.

Luego crecemos, nos volvemos gilipollas y desperdiciamos nuestra vida  ;-)

159  Programación / Java / Re: carPooling.mundo en: 2 Junio 2017, 05:01 am
Hola.
En este foro no se hacen tareas. Si tienes una duda puntual pregutala y con gusto te ayudaremos.

Tambien. Cuando pongas codigo utiliza las etiquetas GeSHi como lo indican las reglas del foro.
160  Programación / Java / Re: Problemas con arrays (unidimensionales y multidimensionales) y operadores en: 1 Junio 2017, 09:40 am
¿Cual es el problema puntual? (No quiero leer el código buscando que te falta y que no)
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 59
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines