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 ... 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 [82] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ... 139
811  Programación / Java / Re: Almacenar datos y no imprimirlos hasta el final del bucle for en: 29 Octubre 2018, 22:00 pm
Eso es fácil pero muestra el codigo  :P
812  Foros Generales / Foro Libre / Re: Me acaban de enviar a la FriendZone directo y sin anestesia. !Ayuda! en: 29 Octubre 2018, 02:29 am
Creo que despues de esto no creo que haya otro "momento"    >:D

pero que cojones estas diciendo?  ademas

Ella me respondio: "jajaja, cuando te dije que "salieramos", me referia a que me acompañaras afuera, a la salida de la universidad, nada mas XD. Oviamente solo te veo como un hermanito, como MI MEJOR AMIGO. En realidad yo ya tengo novio y lo amo, lo siento, espero que lo entiendas y sigamos siendo los mejores amigos. BYE. "..............

yo con eso no creo que jamas le hable, una mujer real no hará esa mal0xFFita estupidez.

tu mente ahorita esta afectada, pero dejame decirte que todos pasamos por esta ·"$&%& con las mujeres no eres le unico jajajaj

813  Programación / Java / Re: crear 5 objetos con caracteristicas ya definidas aleatoriamente en: 29 Octubre 2018, 01:29 am
Hola que tal?

Usa geshi, las variables de instancia deben ser declaradas por convención como private que es un modificador de acceso




en la linea 22 usamos aquí la clase SecureRandom, para generar los números pseudoaleatorios con el método .nextInt()

entonces que es lo que esta pasando, si haces numOjos[un numero aleatorio aquí que será el 0 o el 1], gracias a nextInt()

que según la API dice esto



Código
  1.     * @param bound the upper bound (exclusive).  Must be positive.
  2.     * @return the next pseudorandom, uniformly distributed {@code int}
  3.     *         value between zero (inclusive) and {@code bound} (exclusive)
  4.     *         from this random number generator's sequence
  5.     * @throws IllegalArgumentException if bound is not positive
  6.     * @since 1.2
  7.     */
  8.    public int nextInt(int bound) {
  9.  

cuando haces nextInt(numOjos.length) en length retorna 2, y ese numero 2 se excluye, dando como resultado un numero entre el 0 y 1, sin decimales, y ese numero corresponde al subindice de ese array

e igualmente con un array de mayor tamaño como nivelArreglarCosas que consta de 5 posiciones, nextInt() en ese caso le tocaría un numero de entre 0 a 4 porque length retornara 5, pero este se excluye por lo tanto seria 4;

por lo tanto nivelArreglarCosas[secureRandom.nextInt(nivelArreglarCosas.length)] se podría traducir a nivelArreglarCosas[numero aleatorio entre 0 a 4]  :o


Código
  1. package foro;
  2. import java.security.SecureRandom;
  3. import java.util.Arrays;
  4. import java.util.stream.IntStream;
  5.  
  6. public class Ayudantes {
  7.  
  8.    private int numOjos[] = {1,2};
  9.    private String colorPiel[] = {"morado","amarillo"};
  10.    private String altura[] = {"mediano","alto"};
  11.    private int nivelCrearObjetos[] = {1,2,3,4,5};
  12.    private int nivelArreglarCosas[] = {1,2,3,4,5};
  13.    private int nivelDestruccion[] = {1,2,3,4,5};
  14.  
  15.    public Ayudantes() {
  16.  
  17.    }
  18.  
  19.    @Override
  20.    public String toString() {
  21.        final SecureRandom secureRandom = new SecureRandom();
  22.        return "Ayudante {" +
  23.                "numOjos=" +              (numOjos[secureRandom.nextInt(numOjos.length)]) +
  24.                ", colorPiel=" +          (colorPiel[secureRandom.nextInt(colorPiel.length)]) +
  25.                ", altura=" +             (altura[secureRandom.nextInt(altura.length)]) +
  26.                ", nivelCrearObjetos=" +  (nivelCrearObjetos[secureRandom.nextInt(nivelCrearObjetos.length)]) +
  27.                ", nivelArreglarCosas=" + (nivelArreglarCosas[secureRandom.nextInt(nivelArreglarCosas.length)]) +
  28.                ", nivelDestruccion=" +   (nivelDestruccion[secureRandom.nextInt(nivelDestruccion.length)]) +
  29.                '}';
  30.    }
  31.  
  32.    public static void main(String ...blabla) {
  33.        IntStream.rangeClosed(1,5)
  34.                .forEach(numero -> System.out.println(numero+"- "+new Ayudantes().toString()));
  35.    }
  36. }
  37.  

Output

Código
  1. 1- Ayudante {numOjos=1, colorPiel=amarillo, altura=mediano, nivelCrearObjetos=5, nivelArreglarCosas=3, nivelDestruccion=4}
  2. 2- Ayudante {numOjos=2, colorPiel=amarillo, altura=mediano, nivelCrearObjetos=3, nivelArreglarCosas=2, nivelDestruccion=3}
  3. 3- Ayudante {numOjos=1, colorPiel=morado, altura=mediano, nivelCrearObjetos=2, nivelArreglarCosas=2, nivelDestruccion=4}
  4. 4- Ayudante {numOjos=2, colorPiel=morado, altura=mediano, nivelCrearObjetos=1, nivelArreglarCosas=4, nivelDestruccion=1}
  5. 5- Ayudante {numOjos=2, colorPiel=amarillo, altura=alto, nivelCrearObjetos=4, nivelArreglarCosas=3, nivelDestruccion=2}
  6.  
  7. Process finished with exit code 0
  8.  


3 maneras diferentes de hacerlo, existen mas
Código
  1. private void iterates() {
  2.        for(int f=0; f<5; f++) {
  3.            System.out.println((f+1)+"- "+new Ayudantes().toString());
  4.        }
  5.  
  6.        System.out.println("··········································");
  7.        List<Ayudantes> ayudantes = new ArrayList<>();
  8.        ayudantes.add(new Ayudantes());
  9.        ayudantes.add(new Ayudantes());
  10.        ayudantes.add(new Ayudantes());
  11.        ayudantes.add(new Ayudantes());
  12.        ayudantes.add(new Ayudantes());
  13.        for(Ayudantes ayudante : ayudantes) {
  14.            System.out.println(ayudante.toString());
  15.        }
  16.        System.out.println("··········································");
  17.        IntStream.rangeClosed(1,5)
  18.                .forEach(numero -> System.out.println(numero+"- "+new Ayudantes().toString()));
  19.  
  20.    }
  21.  
814  Programación / Java / Re: Envío de correo programado en otra fecha en Java en: 25 Octubre 2018, 02:27 am
Eso se puede ajustar agregando un método set o por el constructor del  

Código
  1. private String fecha;
  2. public ExecTimer(final String fecha) {
  3.    this.fecha = fecha;
  4.    initTask();
  5. }
  6.  

O con el método set

Código
  1. public void setFecha(final String fecha) {
  2.    this.fecha = fecha;
  3. }

Con guava event bus también sirve, dependiendo que tan acoplado este tu código  

Esta fecha futura es la que debemos de setear por lo antes nombrado

Código
  1. private static final String FECHA_FUTURA = "00 30 6 ? * FRI";

tu comentas

Citar
Lo que no veo es como llamar desde la clase que gestiona el alta en base de datos a execTimer para pasarle la fecha en la que se debe enviar el correo.

justo en esa parte debería ver un trozo del código para ver que tal esta, recuerda que el método execute del TimerClass es donde debe ir tu logica cuando el usuario dispare algun evento

ver el entrypoint de tu aplicación es también importante.



Entonces refactorizando un poco crearemos nuestro builder para personalizar un poco homie, que se lo setearemos al método setTimeBean de la clase ExecTimer  :xD

el método toString le hacemos override para adaptarlo a nuestras necesidades  >:D, tanto day como month son requeridos sino la misma API de quartz atrapara el error en runtime XD

el string retornado es la expresión de cron


Código
  1.    @Override
  2.    public String toString() {
  3.        final StringBuilder stringBuilder = new StringBuilder()
  4.                .append(sec)
  5.                .append(" ")
  6.                .append(min)
  7.                .append(" ")
  8.                .append(hour)
  9.                .append(" ")
  10.                .append(day) // requeridp
  11.                .append(" ")
  12.                .append(month) // requerido
  13.                .append(" ")
  14.                .append("?");// opcional el YEAR XD
  15.        System.out.println("Expresion cron: "+stringBuilder.toString());
  16.        return stringBuilder.toString();


Código
  1. package foro;
  2.  
  3. public final class TimeBean {
  4.  
  5.    private final int sec;
  6.    private final int min;
  7.    private final int hour;
  8.    private final int day;
  9.    private final int month;
  10.  
  11.    private TimeBean(final Builder builder) {
  12.        this.sec = builder.sec;
  13.        this.min = builder.min;
  14.        this.hour = builder.hour;
  15.        this.day = builder.day;
  16.        this.month = builder.month;
  17.    }
  18.  
  19.    public int getSec() {
  20.        return sec;
  21.    }
  22.  
  23.    public int getMin() {
  24.        return min;
  25.    }
  26.  
  27.    public int getHour() {
  28.        return hour;
  29.    }
  30.  
  31.    public int getDay() {
  32.        return day;
  33.    }
  34.  
  35.    public int getMonth() {
  36.        return month;
  37.    }
  38.  
  39.    @Override
  40.    public String toString() {
  41.        final StringBuilder stringBuilder = new StringBuilder()
  42.                .append(sec)
  43.                .append(" ")
  44.                .append(min)
  45.                .append(" ")
  46.                .append(hour)
  47.                .append(" ")
  48.                .append(day)
  49.                .append(" ")
  50.                .append(month)
  51.                .append(" ")
  52.                .append("?");// opcional el YEAR XD
  53.        System.out.println("Expresion cron: "+stringBuilder.toString());
  54.        return stringBuilder.toString();
  55.    }
  56.  
  57.   public static class Builder {
  58.        private int sec;
  59.        private int min;
  60.        private int hour;
  61.        private int day;
  62.        private int month;
  63.  
  64.        public Builder withSec(final int sec) {
  65.            this.sec = sec;
  66.            return this;
  67.        }
  68.        public Builder withMin(final int min) {
  69.            this.min = min;
  70.            return this;
  71.        }
  72.        public Builder withHour(final int hour) {
  73.            this.hour = hour;
  74.            return this;
  75.        }
  76.        public Builder withDay(final int day) {
  77.            this.day = day;
  78.            return this;
  79.        }
  80.        public Builder withMonth(final int month) {
  81.            this.month = month;
  82.            return this;
  83.        }
  84.        public TimeBean build() {
  85.            return new TimeBean(this);
  86.        }
  87.    }
  88.  


Un ligero cambio a la clase ExecTimer

Código
  1. package foro;
  2.  
  3. import org.quartz.*;
  4. import org.quartz.impl.StdSchedulerFactory;
  5.  
  6. import java.util.Objects;
  7.  
  8. public class ExecTimer  {
  9.  
  10.    private JobDetail job;
  11.    private Trigger trigger;
  12.    private Scheduler scheduler;
  13.  
  14.    private TimeBean timeBean;
  15.  
  16.    public ExecTimer() {
  17.  
  18.    }
  19.  
  20.    public ExecTimer(final TimeBean timeBean) {
  21.        this.timeBean = Objects.requireNonNull(timeBean,()->"TimeBean sin instanciar crear builder");
  22.    }
  23.  
  24.    public void setTimeBean(final TimeBean timeBean) {
  25.        this.timeBean = Objects.requireNonNull(timeBean,()->"TimeBean sin instanciar crear builder");
  26.    }
  27.  
  28.    public void initTask() {
  29.        try {
  30.  
  31.            job = JobBuilder.newJob(TimerClass.class)
  32.                    .withIdentity("EnviarMail")
  33.                    .build();
  34.  
  35.            trigger = TriggerBuilder.newTrigger()
  36.                    .withIdentity("testing v1.1 para olimpico10", "group1")
  37.                    .withSchedule(CronScheduleBuilder.cronSchedule(timeBean.toString()))
  38.                    .build();
  39.  
  40.            scheduler = new StdSchedulerFactory().getScheduler();
  41.            scheduler.start();
  42.            scheduler.scheduleJob(job, trigger);
  43.  
  44.        } catch (SchedulerException e) {
  45.            e.printStackTrace();
  46.        }
  47.    }
  48. }
  49.  


Aquí esta clase ejecutara el ExecTimer a modo de ejemplo, tu puedes crear la tuya en tu proyecto para instanciar
Vemos 2 clases nuevas aquí ambas geniales con la nueva API de java.time



Código
  1. private final ZoneId zoneId = ZoneId.of("Europe/Madrid");
  2. private final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),zoneId).plusSeconds(5);
  3.  


Este método añade 5 segundos despues de el actual al String final o mejor dicho a la Expresion cron homie


Código
  1. .plusSeconds(5);

Código
  1. package foro;
  2.  
  3. import java.time.Instant;
  4. import java.time.ZoneId;
  5. import java.time.ZonedDateTime;
  6.  
  7. public class ExcuteTaskOnNext {
  8.  
  9.    private ExecTimer execTimer = new ExecTimer();
  10.    private final ZoneId zoneId = ZoneId.of("Europe/Madrid");
  11.    private final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),zoneId).plusSeconds(5);
  12.  
  13.    public ExcuteTaskOnNext() {
  14.        init();
  15.    }
  16.  
  17.    private void init() {
  18.  
  19.       final TimeBean timeBean = new TimeBean.Builder()
  20.                .withSec(zonedDateTime.getSecond())
  21.                .withMin(zonedDateTime.getMinute())
  22.                .withHour(zonedDateTime.getHour())
  23.                .withDay(zonedDateTime.getDayOfMonth())//el dia es requerido
  24.                .withMonth(zonedDateTime.getMonthValue()) //el mes es requrido
  25.                .build();
  26.  
  27.        execTimer.setTimeBean(timeBean);
  28.        execTimer.initTask();
  29.    }
  30.  
  31.    public static void main(String ...agaga) {
  32.        new ExcuteTaskOnNext();
  33.    }
  34. }
  35.  


Entonces vamos a lo siguiente tu me diras joderrr tiiioo, pero este chaval le digo mil veces que quiero mandar el fucking correo al mes siguiente  :xD

solo te tocara añadir esto  :xD


Código
  1. plusMonths(1)


nuestro builder podemos configurarlo de la siguente manera, o sea, valido también, si unicamente vas a usar el envio mensual


Código
  1. //para crear una tarea mensual el builder es valido asi segun cronmaker
  2.        final TimeBean timeBean = new TimeBean.Builder()
  3.                .withDay(zonedDateTime.getDayOfMonth())//el dia es requerido
  4.                .withMonth(zonedDateTime.getMonthValue()) //el mes es requrido
  5.                .build();
  6.  


si colocamos la expresion originada gracias a la linea 54 de la clase TimeBean Expresion cron: 0 0 0 25 11 ?

 en http://www.cronmaker.com/ tenemos


consta que debería crear el proyecto en struc2  :xD pero me da flojera quizás mañana, tu tienes que probar aunque sea mandando ese correo a los 5 segundos, pero no se como es tu código ahí




La clase ExcuteTaskOnNext a sido renombrada  RunNextTask , siendo una mejor versión

Código
  1. package com.example.javamail.executarnextmonth;
  2.  
  3. import com.example.javamail.util.GenericBuilder;
  4. import com.example.javamail.util.ShowData;
  5. import com.vaadin.spring.annotation.SpringComponent;
  6. import com.vaadin.ui.Label;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8.  
  9. import java.time.Instant;
  10. import java.time.ZoneId;
  11. import java.time.ZonedDateTime;
  12.  
  13. @SpringComponent
  14. public class RunNextTask implements ShowData {
  15.  
  16.    @Autowired
  17.    private ExecTimer execTimer;
  18.    private ZonedDateTime zonedDateTime;
  19.    private TimeBean timeBean;
  20.  
  21.  
  22.    public void initTimeBuilder(final Tiempos tiposTiempos, final Integer valueTime, Label label) {
  23.        try {
  24.            switch (tiposTiempos) {
  25.                case SEGUNDOS:
  26.                    zonedDateTime = getZoneDateTime().plusSeconds(valueTime);
  27.                    timeBean = getTimeBeanBuilder();
  28.                    break;
  29.                case MINUTOS:
  30.                    zonedDateTime = getZoneDateTime().plusMinutes(valueTime);
  31.                    timeBean = getTimeBeanBuilder();
  32.                    break;
  33.                case HORAS:
  34.                    zonedDateTime = getZoneDateTime().plusHours(valueTime);
  35.                    timeBean = getTimeBeanBuilder();
  36.                    break;
  37.                case MESES:
  38.                    zonedDateTime = getZoneDateTime().plusMonths(valueTime);
  39.                    timeBean = getTimeBeanBuilder();
  40.                    break;
  41.            }
  42.        }catch (Exception ex){
  43.            getLogger().error(null,ex);
  44.        }
  45.        execTimer.setTimeBean(timeBean);
  46.        label.setValue("Expresión cron "+timeBean.toString());
  47.        execTimer.initTask();
  48.    }
  49.  
  50.    /**
  51.      * Metodo de uso opcional
  52.      */
  53.    public void initTimeBeanMonth() {
  54.        final ZoneId zoneId = ZoneId.of("Europe/Madrid");
  55.        final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),zoneId).plusMonths(1);
  56.        //para crear una tarea mensual el builder es valido asi segun cronmaker
  57.  
  58.        final TimeBean timeBean = GenericBuilder.of(TimeBean::new)
  59.                .with(TimeBean::setDay,zonedDateTime.getDayOfMonth())
  60.                .with(TimeBean::setMonth,zonedDateTime.getMonthValue())
  61.                .build();
  62.  
  63.        execTimer.setTimeBean(timeBean);
  64.        execTimer.initTask();
  65.    }
  66.  
  67.    private ZonedDateTime getZoneDateTime() {
  68.        return ZonedDateTime.ofInstant(Instant.now(),ZoneId.of("Europe/Madrid"));
  69.    }
  70.  
  71.    private TimeBean getTimeBeanBuilder() {
  72.        return GenericBuilder.of(TimeBean::new)
  73.                .with(TimeBean::setSec,this.zonedDateTime.getSecond())
  74.                .with(TimeBean::setMin,this.zonedDateTime.getMinute())
  75.                .with(TimeBean::setHour,this.zonedDateTime.getHour())
  76.                .with(TimeBean::setDay,this.zonedDateTime.getDayOfMonth())
  77.                .with(TimeBean::setMonth,this.zonedDateTime.getMonthValue())
  78.                .build();
  79.    }
  80. }


donde invocaremos al método initTimeBuilder, con 3 parámetros

  • El tipo de tiempo
  • El retardo
  • El label para mostrar la salida

Código
  1. @Autowired
  2. private RunNextTask runNextTask;
  3.  

Código
  1. runNextTask.initTimeBuilder(tiempo, valueTime, labelExpresionCron);

eso estará contenido en la clase FormEmailSender.java

> Opción guiarse por aquí

https://foro.elhacker.net/java/envio_de_emails_programados_con_springboot_vaadin_8_quartz-t489066.0.html
815  Programación / Java / Re: No se encuentra clase principal en: 25 Octubre 2018, 00:54 am
Fijate que me creo una carpeta en el escritorio llamada como tu paquete

Código
  1. javac primerproyecto/PrimerProyecto.java

Este comando deberia de funcionarte ya que, con netbeans tiene el bytecode creado
Código
  1. java primerproyecto/PrimerProyecto

Código
  1. package primerproyecto;
  2.  
  3. import java.util.function.Consumer;
  4. /**
  5.  *
  6.  * @author SonnyCrockett
  7.  */
  8. public class PrimerProyecto {
  9.  
  10.    /**
  11.      * @param args the command line arguments
  12.      */
  13.    public static void main(String[] args) {
  14.        //System.out.println("Hola Mundo esto es Java8");
  15.  
  16. java8(System.out::println,"esto si es java8 XD");
  17.    }
  18.  
  19.    private static void java8(final Consumer<String> c, final String msg) {
  20.        c.accept(msg);
  21.    }
  22.  
  23. }


si no te funciona el comando javac debes ajustarlo en el path de las variables de entorno, justo ahí tienes el fallo


Código
  1. C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src\primerproyecto>java -version


debes moverte a la carpeta src, con el siguiente comando te mueves a través de los directorios anteriores
Código
  1. con cd ..

debes moverte haste quedar aquí
Código
  1. C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src

y ejecutar desde ahí
Código
  1. java primerproyecto/PrimerProyecto
816  Programación / Java / Re: No se encuentra clase principal en: 25 Octubre 2018, 00:30 am
Hola,

pues no, lee bien lo que te pongo


Usa tambien GeSHI





Has esto en tu cmd, el comando date es solo ejemplo


817  Programación / Java / Re: No se encuentra clase principal en: 24 Octubre 2018, 20:39 pm
Muestra la salida en la cmd de

Código
  1. java -version

 y

Código
  1. javac -version
818  Programación / Java / Re: No se encuentra clase principal en: 24 Octubre 2018, 20:04 pm
Ve al directorio donde tengas el bytecode es decir el .class

Ten en cuenta q ese archivo está dentro de primerproyecto es  :decir tu package

 java nombrePaquete.TuClase , con el comando java lo ejecutas

E igual desde la cmd que te muestra la consola con

java -version y javac -version este último compila el .java a .class

Estoy desde el cell XD
819  Programación / Java / Re: Necesito ayuda con el desarrolo de una aplicación en: 22 Octubre 2018, 22:30 pm
Hola, me gustaria que me ayudaran a entender la logica para poder desarrollar mi programa.
El programa consiste en un verificador de presupuesto y de stock. y tambien debe constar de un convertidor de word o exel a pdf, para subir datos. Una base de datos donde se almacene el stock. Me ayudarian mucho a hacer una logica para empezar con el desarrollo del aplicativo y yo seguire subiendo mi codigo para que me ayuden a verificarlo. Soy nuevo en este foro, espero me puedan ayuudar.

Es que se te puede ayudar pero, no creo que aun estas para eso, hay librerias para todo lo que describes, pero como te tiro el codigo aqui cuando no sabrias como hacer las cosas?

tienes que tener codigo escrito  :-\
820  Programación / Java / Re: Programas para realizar aplicación ANDROID en: 20 Octubre 2018, 13:35 pm
Buenas, me gustaría que me aconsejaseis sobre posibles maneras de crearme una aplicación Android para el móvil. Hago un pequeño resumen de lo que quiero hacer:

Tengo montado un robot y me gustaría controlarlo con una aplicación Android a través de Bluetooth. Para ello, he estado buscando información sobre internet y no sé si con Android Studio sería la mejor forma de poder crearme mi aplicación y de forma gratuita. Mi aplicación consistiría en algo simple: 4 o 5 botones para poder mover el propio robot hacia un lado u otro y ya después ponerlo mas o menos bonito depende del tiempo que tenga. No sé si tendría que hacer uso también de bases de datos, pero creo que no me haría falta porque no tendría que recoger ningún dato, simplemente darle a un botón y que el propio robot haga la función indicada.

Muchas gracias !!

Hola,

pues tal cual Android studio te vendría bien https://developer.android.com/studio/ y si son 4 botones con datos en runtime pues adelante, ya tu mismo sabes no te hace falta una db
Páginas: 1 ... 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 [82] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ... 139
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines