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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 70
1  Programación / Java / Re: agregar string a fichero existente en: 30 Julio 2015, 19:49 pm
¿Podrías explicarte correctamente? ¿Qué tratas hacer y por qué, para obtener qué resultado? Porque no se te entiende absolutamente nada.

Si quieres guardar cambios, solo debes hacer:

Código
  1. btnSave.addActionListener(new ActionListener() {
  2.    @Override
  3.    public void actionPerformed(ActionEvent e) {
  4.        JPanel panel = (JPanel) tabs.getSelectedComponent();
  5.        // 0 -> asume que el JTextArea es el unico hijo del JPanel
  6.        JTextArea area = (JTextArea) panel.getComponent(0);
  7.        String text = area.getText();
  8.        try {
  9.            Path path = Paths.get("ruta/a/tu/archivo");
  10.            Files.write(path, text.getBytes("utf-8"));
  11.        } catch(IOException e) {
  12.            throw new RuntimeException("Ocurrió un error al guardar los cambios", e);
  13.        }
  14.    }
  15. });

PD: Importar Path, Paths y Files del paquete java.nio.file.
2  Programación / Java / Re: (Duda) Que libro comprar en: 30 Julio 2015, 18:57 pm
Think in Java ya no es recomendado, trabaja con una API de Java vieja que en el desarrollo actual no te será de mucha ayuda.
3  Programación / .NET (C#, VB.NET, ASP) / Re: Java vs .NET (novato) en: 30 Julio 2015, 14:40 pm
Si bien es cierto que es bueno un entorno cómodo por defecto, tú como programador debes poderte adaptar. No creas que siempre vas a encontrar todo listo, y aquí te diferencias entre un novato y un programador que sabe lo que hace. Como programador debes de poder manejar las herramientas como Git, tu terminal (Win-GNU/Linux), Mercurial, etc. Es un hábito que debes adquirir.

Si quieres todo hecho, ve por .NET. En Java nos acostumbramos a aprender a manejar las cosas por nuestra cuenta también, como Maven por ejemplo. Si te refieres solo a instalamiento de entorno, en el caso de Java solo es Next, Next (tanto el JDK como IDEs, aunque siempre te permite la personalización de plugins por ejemplo).

En fin, tanto VS como NetBeans o IntelliJ IDEA, te permiten un manejo gráfico de Maven, Git, Mercurial, Subversion, etc.
4  Programación / Java / Re: Re: Duda con netbeans en: 30 Julio 2015, 06:35 am
No se de donde diablos sacó esa información, nunca lo he escuchado. Lo que NetBeans guarda son configuraciones del proyecto solamente. Decir que te dice cuánto tiempo demoró el proyecto, ¿cómo lo hace? ¿cómo hace para agregar minutos si el proyecto puede estar abierto pero no modificándose?

Hacer eso sería una pérdida de tiempo y recursos ya que el IDE tendría que estar escaneando el proyecto a cada instante, checkeando modificaciones para aumentar minutos, horas, etc.

Lo único que todos vemos que guarda NetBeans es el usuario del equipo pero como Javadoc (@author).

En resumen dudo muchísimo de la afirmación de tu amigo.
5  Programación / Java / Timer & TimerTask en: 29 Julio 2015, 22:28 pm

La clase Timer es una clase muy útil para situaciones particulares. Estas situaciones pueden ser por ejemplo, cuando necesitamos hacer algo cada X tiempo. Quizás hayas visto en algunas webs que aparecen ofertas o anuncios cada X tiempo, pues bien, esto se hace gracias a los Timers.

Vamos a realizar un pequeño timer que hace un conteo regresivo imprimiendo en pantalla la hora actual. Primero hagamos una clase que muestre la hora actual.

Código
  1. public class Display {
  2.  
  3.    public void printTime(int hour, int minute, int second) {
  4.        String fullHour = "";
  5.  
  6.        fullHour += (hour > 9) ? ":" + hour : "0" + hour;
  7.        fullHour += (minute > 9) ? ":" + minute : ":0" + minute;
  8.        fullHour += (second > 9) ? ":" + second : ":0" + second;
  9.  
  10.        System.out.println(fullHour);
  11.    }
  12. }

Nada del otro mundo, solo le da formato a una hora recibida como 3 parámetros: hora, minuto y segundo. Esta clase la usaremos en el Timer para mostrar la hora actual.

Código
  1. import java.util.Timer;
  2. import java.util.TimerTask;
  3.  
  4. public class Timeout {
  5.  
  6.    private int hour = 0;
  7.    private int minute = 0;
  8.    private int second = 11;
  9.    private Timer timer;
  10.    private boolean isTimerRunning;
  11.    private Display display;
  12.  
  13.    public Timeout() {
  14.        timer = new Timer();
  15.        display = new Display();
  16.    }
  17.  
  18.    TimerTask task = new TimerTask() {
  19.        @Override
  20.        public void run() {
  21.            isTimerRunning = true;
  22.            if(second > 0) {
  23.                second--;
  24.            } else {
  25.                second = 59;
  26.                if(minute > 0) minute--;
  27.                else {
  28.                    minute = 59;
  29.                    if(hour > 0) hour--;
  30.                    // si segundo = 0, minuto = 0 y hora = 0,
  31.                    // cancelamos el timer
  32.                    else {
  33.                        isTimerRunning = false;
  34.                        timer.cancel();
  35.                        timer.purge();
  36.                    }
  37.                }
  38.            }
  39.            if(isTimerRunning)
  40.                display.printTime(hour, minute, second);
  41.        }
  42.    }; // fin timertask
  43.  
  44.    public void start(int timeout, int interval) {
  45.        timer.schedule(task, timeout, interval);
  46.    }
  47.  
  48. } // fin clase

El código es autoexplicado. En lo que debemos de fijarnos es el TimerTask. La TimerTask nos permite realizar tareas en un thread separado. Esto es así, porque por lo general, cuando usamos un Timer es para que se esté ejecutando cada cierto tiempo un código de forma paralela, esto eso, multithreading programming (programación multi hilo). El código del TimerTask solo hace una serie de comprobaciones para disminuir la hora, minuto y segundo. Luego, llama al método printTime del objeto Display, pasándole la hora, minuto y segundo y que este método dará forma e imprimirá.

Para empezar un timer, debemos de llamar al método schedule el cual recibe 3 parámetros:

  • Un objeto TimerTask
  • Un timeout (tiempo de espera para que empiece a ejecutarse)
  • Un intervalo (la tarea se ejecutará cada X tiempo)

Los dos últimos parámetros se debe especificar en milisegundos, así, 1000 es equivalente a 1 segundo. Por último, hagamos nuestra clase principal.

Código
  1. public class TimerTest {
  2.  
  3.    public static void main(String[] args) {
  4.        Timeout timeout = new Timeout();
  5.        timeout.start(0, 1000);
  6.    }
  7. }

En la clase principal decimos que el timer tendrá un delay de 0s y un intervalo de 1s. Si compilamos y corremos:

Código
  1. javac Display.java
  2. javac Timeout.java
  3. javac TimerTest.java
  4.  
  5. java TimerTest

Obtendremos lo siguiente:


¿Posibilidades? La que puedas imaginar, así que piensa como sacarle provecho en tu próximo proyecto.
6  Programación / Java / Re: Diferencias entre overload y override?? en: 28 Julio 2015, 18:56 pm
Te agradecería si marcas los temas como solucionados (ícono check verde al tema) para mantener el orden.

1. Overloading (sobrecarga)

La sobrecarga es cuando en una misma clase redefines un mismo método. Esta técnica tiene una restricción y es:

  • Un método sobrecargado debe tener diferentes parámetros (tipos de dato)

Así, lo siguiente es correcto:

Código
  1. public int multiplicar(int x, int y) {
  2. return x * y;
  3. }
  4.  
  5. public int multiplicar(float x, float y) {
  6. return x * y;
  7. }

Pero esto es incorrecto:

Código
  1. public int multiplicar(int x, int y) {
  2. return x;
  3. }
  4.  
  5. public float multiplicar(int x, int y) {
  6. return new Float(String.valueOf(x));
  7. }

A pesar que el tipo de retorno es diferente, los parámetros son iguales, por lo que el compilador lo detectará como el mismo método.

2. Overriding (sobreescritura)

La sobreescritura sucede cuando tu heredas una clase o cuando implementas una interfaz. En el caso de herencia, es obligatorio sobreescribir los métodos de una superclase si estos son abstractos, si no son abstractos, es opcional sobreescribirlos; pero generalmente así sucede para dar un comportamiento polimórfico.

Código
  1. public abstract class Persona {
  2.  
  3. // obligatorio sobreescribir en subclases
  4. public abstract void lenguaje();
  5.  
  6. // no es obligatorio, ya que no es abstracto
  7. public void caracteristicas() {
  8. System.out.println("dos ojos, una nariz y una boca");
  9. }
  10.  
  11. }

Código
  1. public class Canadiense extends Persona {
  2.  
  3. @Override // indica que se sobreescribe
  4. public void lenguaje() {
  5. System.out.println("Inglés");
  6. }
  7.  
  8. // método caracteristicas heredado
  9.  
  10. }

En el caso de una clase que implemente una interfaz, es obligatorio sobreescribir los métodos  de la interfaz, siempre y cuando estos no sean default, ya que por defecto, los métodos  de una interfaz son públicos y abstractos.

Código
  1. public interface Construccion {
  2.  
  3. // necesita ser sobreescrito
  4. int cantidadColumnas();
  5.  
  6. // necesita ser sobreescrito
  7. int cantidadPisos();
  8.  
  9. // no es necesario sobreescribir
  10. default boolean tieneAsensor() {
  11. return true;
  12. }
  13.  
  14. }

Código
  1. public class Edicio implements Construccion {
  2.  
  3. @Override
  4. public int cantidadColumnas() {
  5. return 20;
  6. }
  7.  
  8. @Override
  9. public int cantidadPisos() {
  10. return 10;
  11. }
  12.  
  13. }
  14.  
7  Programación / Java / Re: Re: (Duda) Que libro comprar en: 28 Julio 2015, 02:29 am
Hay bastantes, pero personalmente te puedo recomendar Java 7 los fundamentos del lenguaje de programación y Cómo programar en Java de Deitel & Deitel. Ambos los leí cuando empezaba y me ayudaron mucho. Si no se te dificulta el inglés, lee todo lo que puedas en inglés que hay muchísimo material bueno en ese idoma.

PD: Siempre mira con que versión de Java trabaja el libro. Adquiere los que sean Java 7+.


Saludos.
8  Programación / Programación C/C++ / Re: Criba de eratóstenes en C. en: 27 Julio 2015, 21:05 pm
Yo hice lo mismo para un amigo pero en Java. Te dejo el gist para que lo veas y lo traduzcas a C: Números primos con criba de eratóstenes
9  Programación / Java / Re: [ayuda]Llenar un vector apartir de 2 que cree en: 27 Julio 2015, 20:06 pm
Es sencillo, solo hay que pensar un poco.

Código
  1. import java.util.Scanner;
  2.  
  3. public class SerieUtil {
  4. public static void main(String[] args) {
  5. Integer[] serie;
  6. Integer[] even;
  7. Integer[] odd;
  8. final Scanner READER = new Scanner(System.in);
  9.  
  10. System.out.print("Ingrese el límite de la serie impar: ");
  11. byte limit = READER.nextByte();
  12.  
  13. serie = new Integer[Math.round((float) limit/2)];
  14. even = new Integer[serie.length/2];
  15. odd = new Integer[Math.round((float) serie.length/2)];
  16.  
  17. // llena los arreglos
  18. int serieValue = 1;
  19. for(byte i=0; i<serie.length; i++) {
  20. serie[i] = serieValue;
  21.  
  22. // empieza a contar en el indice 1, no 0:
  23. // 1, 3, 5, 7, 9, 11, 13 -> 1 es indice 1,
  24. // 3 es indice 2, 5 es indice 3, etc...
  25. int aux = i+1;
  26. if(aux % 2 == 0) {
  27. int evenIndex = getIndexToFill(even);
  28. even[evenIndex] = serieValue;
  29. }
  30. else {
  31. int oddIndex = getIndexToFill(odd);
  32. odd[oddIndex] = serieValue;
  33. }
  34.  
  35. serieValue += 2; // va de 2 en 2, 1-3-5-7...
  36. }
  37.  
  38. for(byte i=0; i<serie.length; i++) {
  39. if(i < even.length)
  40. System.out.println(even[i]);
  41. // si i es mayor quel tamaño de even
  42. // entonces, se debe empezar a imprimir
  43. // el arreglo odd, por lo tanto, la forma
  44. // de acceder al valor actual de odd
  45. // es restando i (indice de serie) - el
  46. // tamaño de even. Por ejemplo, even tiene
  47. // un  tamaño de 3 y odd de 4. Cuando i
  48. // vale 3 (supera el tamaño de even), se de
  49. // be entonces empezar a imprimir odd. Entonces,
  50. // i(3) - even.length(3) = 0 -> odd[0],
  51. // i(4) - even.length(3) = 1 -> odd[1],
  52. // i(5) - even.length(3) = 2 -> odd[2],
  53. // i(6) - even.length(3) = 2 -> odd[3]
  54. else {
  55. System.out.println(odd[i - even.length]);
  56. }
  57. }
  58.  
  59. }
  60.  
  61. // Obtiene el primer índice null para establecer un
  62.  // número de la serie
  63. public static int getIndexToFill(Integer[] array) {
  64. // if array is fill, the last index fill is the last index
  65. int indexToFill = array.length - 1;
  66.  
  67. for(int i=0; i<array.length; i++) {
  68. if(array[i] == null) {
  69. indexToFill = i;
  70. break;
  71. }
  72. }
  73.  
  74. return indexToFill;
  75. }
  76.  
  77. }
  78.  

PD: Los códigos deben ir entre etiquetas GeSHi (leer reglas del foro).
10  Programación / Java / Re: [Android] Por qué funciona y salta excepcion del error. en: 27 Julio 2015, 18:03 pm
A mí me suena más a un bug con el tipo de dispositivo. Lo que no entiendo, es por qué cuando especificas un constructor vacío no sucede. De alguna manera, ese super() hace algo en el constructor de BroadcasterReceiver o el runtime instancia internamente a las subclases de BroadcasterReceiver y al no encontrar un constructor vacío, lanza excepción. Es raro, trata de reportarlo como bug a ver qué te dicen xD.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 70
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines