Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rub'n

#771
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 (java) [Seleccionar]

    * @param bound the upper bound (exclusive).  Must be positive.
    * @return the next pseudorandom, uniformly distributed {@code int}
    *         value between zero (inclusive) and {@code bound} (exclusive)
    *         from this random number generator's sequence
    * @throws IllegalArgumentException if bound is not positive
    * @since 1.2
    */
   public int nextInt(int bound) {


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 (java) [Seleccionar]

package foro;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.stream.IntStream;

public class Ayudantes {

   private int numOjos[] = {1,2};
   private String colorPiel[] = {"morado","amarillo"};
   private String altura[] = {"mediano","alto"};
   private int nivelCrearObjetos[] = {1,2,3,4,5};
   private int nivelArreglarCosas[] = {1,2,3,4,5};
   private int nivelDestruccion[] = {1,2,3,4,5};

   public Ayudantes() {

   }

   @Override
   public String toString() {
       final SecureRandom secureRandom = new SecureRandom();
       return "Ayudante {" +
               "numOjos=" +              (numOjos[secureRandom.nextInt(numOjos.length)]) +
               ", colorPiel=" +          (colorPiel[secureRandom.nextInt(colorPiel.length)]) +
               ", altura=" +             (altura[secureRandom.nextInt(altura.length)]) +
               ", nivelCrearObjetos=" +  (nivelCrearObjetos[secureRandom.nextInt(nivelCrearObjetos.length)]) +
               ", nivelArreglarCosas=" + (nivelArreglarCosas[secureRandom.nextInt(nivelArreglarCosas.length)]) +
               ", nivelDestruccion=" +   (nivelDestruccion[secureRandom.nextInt(nivelDestruccion.length)]) +
               '}';
   }

   public static void main(String ...blabla) {
       IntStream.rangeClosed(1,5)
               .forEach(numero -> System.out.println(numero+"- "+new Ayudantes().toString()));
   }
}


Output

Código (bash) [Seleccionar]

1- Ayudante {numOjos=1, colorPiel=amarillo, altura=mediano, nivelCrearObjetos=5, nivelArreglarCosas=3, nivelDestruccion=4}
2- Ayudante {numOjos=2, colorPiel=amarillo, altura=mediano, nivelCrearObjetos=3, nivelArreglarCosas=2, nivelDestruccion=3}
3- Ayudante {numOjos=1, colorPiel=morado, altura=mediano, nivelCrearObjetos=2, nivelArreglarCosas=2, nivelDestruccion=4}
4- Ayudante {numOjos=2, colorPiel=morado, altura=mediano, nivelCrearObjetos=1, nivelArreglarCosas=4, nivelDestruccion=1}
5- Ayudante {numOjos=2, colorPiel=amarillo, altura=alto, nivelCrearObjetos=4, nivelArreglarCosas=3, nivelDestruccion=2}

Process finished with exit code 0



3 maneras diferentes de hacerlo, existen mas
Código (java) [Seleccionar]

private void iterates() {
       for(int f=0; f<5; f++) {
           System.out.println((f+1)+"- "+new Ayudantes().toString());
       }

       System.out.println("··········································");
       List<Ayudantes> ayudantes = new ArrayList<>();
       ayudantes.add(new Ayudantes());
       ayudantes.add(new Ayudantes());
       ayudantes.add(new Ayudantes());
       ayudantes.add(new Ayudantes());
       ayudantes.add(new Ayudantes());
       for(Ayudantes ayudante : ayudantes) {
           System.out.println(ayudante.toString());
       }
       System.out.println("··········································");
       IntStream.rangeClosed(1,5)
               .forEach(numero -> System.out.println(numero+"- "+new Ayudantes().toString()));

   }
#772
Eso se puede ajustar agregando un método set o por el constructor del  

Código (java) [Seleccionar]

private String fecha;
public ExecTimer(final String fecha) {
   this.fecha = fecha;
   initTask();
}


O con el método set

Código (java) [Seleccionar]

public void setFecha(final String fecha) {
   this.fecha = fecha;
}


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 (java) [Seleccionar]
private static final String FECHA_FUTURA = "00 30 6 ? * FRI";

tu comentas

CitarLo 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 (java) [Seleccionar]
   @Override
   public String toString() {
       final StringBuilder stringBuilder = new StringBuilder()
               .append(sec)
               .append(" ")
               .append(min)
               .append(" ")
               .append(hour)
               .append(" ")
               .append(day) // requeridp
               .append(" ")
               .append(month) // requerido
               .append(" ")
               .append("?");// opcional el YEAR XD
       System.out.println("Expresion cron: "+stringBuilder.toString());
       return stringBuilder.toString();



Código (java) [Seleccionar]

package foro;

public final class TimeBean {

   private final int sec;
   private final int min;
   private final int hour;
   private final int day;
   private final int month;

   private TimeBean(final Builder builder) {
       this.sec = builder.sec;
       this.min = builder.min;
       this.hour = builder.hour;
       this.day = builder.day;
       this.month = builder.month;
   }

   public int getSec() {
       return sec;
   }

   public int getMin() {
       return min;
   }

   public int getHour() {
       return hour;
   }

   public int getDay() {
       return day;
   }

   public int getMonth() {
       return month;
   }

   @Override
   public String toString() {
       final StringBuilder stringBuilder = new StringBuilder()
               .append(sec)
               .append(" ")
               .append(min)
               .append(" ")
               .append(hour)
               .append(" ")
               .append(day)
               .append(" ")
               .append(month)
               .append(" ")
               .append("?");// opcional el YEAR XD
       System.out.println("Expresion cron: "+stringBuilder.toString());
       return stringBuilder.toString();
   }

  public static class Builder {
       private int sec;
       private int min;
       private int hour;
       private int day;
       private int month;

       public Builder withSec(final int sec) {
           this.sec = sec;
           return this;
       }
       public Builder withMin(final int min) {
           this.min = min;
           return this;
       }
       public Builder withHour(final int hour) {
           this.hour = hour;
           return this;
       }
       public Builder withDay(final int day) {
           this.day = day;
           return this;
       }
       public Builder withMonth(final int month) {
           this.month = month;
           return this;
       }
       public TimeBean build() {
           return new TimeBean(this);
       }
   }



Un ligero cambio a la clase ExecTimer

Código (java) [Seleccionar]

package foro;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Objects;

public class ExecTimer  {

   private JobDetail job;
   private Trigger trigger;
   private Scheduler scheduler;

   private TimeBean timeBean;

   public ExecTimer() {

   }

   public ExecTimer(final TimeBean timeBean) {
       this.timeBean = Objects.requireNonNull(timeBean,()->"TimeBean sin instanciar crear builder");
   }

   public void setTimeBean(final TimeBean timeBean) {
       this.timeBean = Objects.requireNonNull(timeBean,()->"TimeBean sin instanciar crear builder");
   }

   public void initTask() {
       try {

           job = JobBuilder.newJob(TimerClass.class)
                   .withIdentity("EnviarMail")
                   .build();

           trigger = TriggerBuilder.newTrigger()
                   .withIdentity("testing v1.1 para olimpico10", "group1")
                   .withSchedule(CronScheduleBuilder.cronSchedule(timeBean.toString()))
                   .build();

           scheduler = new StdSchedulerFactory().getScheduler();
           scheduler.start();
           scheduler.scheduleJob(job, trigger);

       } catch (SchedulerException e) {
           e.printStackTrace();
       }
   }
}



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 (java) [Seleccionar]

private final ZoneId zoneId = ZoneId.of("Europe/Madrid");
private final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),zoneId).plusSeconds(5);



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


Código (java) [Seleccionar]
.plusSeconds(5);

Código (java) [Seleccionar]

package foro;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class ExcuteTaskOnNext {

   private ExecTimer execTimer = new ExecTimer();
   private final ZoneId zoneId = ZoneId.of("Europe/Madrid");
   private final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),zoneId).plusSeconds(5);

   public ExcuteTaskOnNext() {
       init();
   }

   private void init() {

      final TimeBean timeBean = new TimeBean.Builder()
               .withSec(zonedDateTime.getSecond())
               .withMin(zonedDateTime.getMinute())
               .withHour(zonedDateTime.getHour())
               .withDay(zonedDateTime.getDayOfMonth())//el dia es requerido
               .withMonth(zonedDateTime.getMonthValue()) //el mes es requrido
               .build();

       execTimer.setTimeBean(timeBean);
       execTimer.initTask();
   }

   public static void main(String ...agaga) {
       new ExcuteTaskOnNext();
   }
}



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 (java) [Seleccionar]
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 (java) [Seleccionar]

//para crear una tarea mensual el builder es valido asi segun cronmaker
       final TimeBean timeBean = new TimeBean.Builder()
               .withDay(zonedDateTime.getDayOfMonth())//el dia es requerido
               .withMonth(zonedDateTime.getMonthValue()) //el mes es requrido
               .build();



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 (java) [Seleccionar]
package com.example.javamail.executarnextmonth;

import com.example.javamail.util.GenericBuilder;
import com.example.javamail.util.ShowData;
import com.vaadin.spring.annotation.SpringComponent;
import com.vaadin.ui.Label;
import org.springframework.beans.factory.annotation.Autowired;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

@SpringComponent
public class RunNextTask implements ShowData {

   @Autowired
   private ExecTimer execTimer;
   private ZonedDateTime zonedDateTime;
   private TimeBean timeBean;


   public void initTimeBuilder(final Tiempos tiposTiempos, final Integer valueTime, Label label) {
       try {
           switch (tiposTiempos) {
               case SEGUNDOS:
                   zonedDateTime = getZoneDateTime().plusSeconds(valueTime);
                   timeBean = getTimeBeanBuilder();
                   break;
               case MINUTOS:
                   zonedDateTime = getZoneDateTime().plusMinutes(valueTime);
                   timeBean = getTimeBeanBuilder();
                   break;
               case HORAS:
                   zonedDateTime = getZoneDateTime().plusHours(valueTime);
                   timeBean = getTimeBeanBuilder();
                   break;
               case MESES:
                   zonedDateTime = getZoneDateTime().plusMonths(valueTime);
                   timeBean = getTimeBeanBuilder();
                   break;
           }
       }catch (Exception ex){
           getLogger().error(null,ex);
       }
       execTimer.setTimeBean(timeBean);
       label.setValue("Expresión cron "+timeBean.toString());
       execTimer.initTask();
   }

   /**
    * Metodo de uso opcional
    */
   public void initTimeBeanMonth() {
       final ZoneId zoneId = ZoneId.of("Europe/Madrid");
       final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(),zoneId).plusMonths(1);
       //para crear una tarea mensual el builder es valido asi segun cronmaker

       final TimeBean timeBean = GenericBuilder.of(TimeBean::new)
               .with(TimeBean::setDay,zonedDateTime.getDayOfMonth())
               .with(TimeBean::setMonth,zonedDateTime.getMonthValue())
               .build();

       execTimer.setTimeBean(timeBean);
       execTimer.initTask();
   }

   private ZonedDateTime getZoneDateTime() {
       return ZonedDateTime.ofInstant(Instant.now(),ZoneId.of("Europe/Madrid"));
   }

   private TimeBean getTimeBeanBuilder() {
       return GenericBuilder.of(TimeBean::new)
               .with(TimeBean::setSec,this.zonedDateTime.getSecond())
               .with(TimeBean::setMin,this.zonedDateTime.getMinute())
               .with(TimeBean::setHour,this.zonedDateTime.getHour())
               .with(TimeBean::setDay,this.zonedDateTime.getDayOfMonth())
               .with(TimeBean::setMonth,this.zonedDateTime.getMonthValue())
               .build();
   }
}



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


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

Código (java) [Seleccionar]
@Autowired
private RunNextTask runNextTask;


Código (java) [Seleccionar]
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
#773
Java / Re: No se encuentra clase principal
25 Octubre 2018, 00:54 AM
Fijate que me creo una carpeta en el escritorio llamada como tu paquete

Código (bash) [Seleccionar]
javac primerproyecto/PrimerProyecto.java

Este comando deberia de funcionarte ya que, con netbeans tiene el bytecode creado
Código (bash) [Seleccionar]
java primerproyecto/PrimerProyecto

Código (java) [Seleccionar]
package primerproyecto;

import java.util.function.Consumer;
/**
*
* @author SonnyCrockett
*/
public class PrimerProyecto {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       //System.out.println("Hola Mundo esto es Java8");

java8(System.out::println,"esto si es java8 XD");
   }
   
   private static void java8(final Consumer<String> c, final String msg) {
       c.accept(msg);
   }

}



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


Código (bash) [Seleccionar]
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 (bash) [Seleccionar]
con cd ..

debes moverte haste quedar aquí
Código (bash) [Seleccionar]
C:\Users\SonnyCrockett\Documents\NetBeansProjects\PrimerProyecto\src

y ejecutar desde ahí
Código (bash) [Seleccionar]
java primerproyecto/PrimerProyecto
#774
Java / Re: No se encuentra clase principal
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



#775
Java / Re: No se encuentra clase principal
24 Octubre 2018, 20:39 PM
Muestra la salida en la cmd de

Código (bash) [Seleccionar]
java -version

 y

Código (bash) [Seleccionar]
javac -version
#776
Java / Re: No se encuentra clase principal
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
#777
Cita de: Arexstein en 22 Octubre 2018, 16:52 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  :-\
#778
Cita de: JoseRomero en 17 Octubre 2018, 12:54 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
#779
Hola,

es de caracter privado lo que tiene tu json ? http://localhost:8080/Sitio%201/code.php

puedo verlo? por lo visto es el JSON que estas generando
#780
Cita de: WHK en 18 Octubre 2018, 22:48 PM
Hola amigo como estás, absurdo es el que se queda con la duda sin preguntar, nadie nace sabiendo todas las cosas, hace mucho tiempo también me tocó hacer una infinidad de preguntas que por muy básicas que fueran me han servido mucho.

Hay dos maneras de hacer esto, utilizando procedimientos con un buen checklist o hacer todo según el criterio propio utilizando una buena base de conocimientos.

Ambas maneras son efectivas pero te llevan a caminos distintos. Una de las cosas importantes que consideraría en una revisión de seguridad dentro de una red wifi (entendiendo que ya estás conectado) es visualizar mentalmente cómo está conectado todo, por ejemplo... debe haber un punto de acceso que sirve el wifi, este a su ves puede estar repitiendo y llegar a un appliance (una caja de 1u que da wifi), por ejemplo un wifi controller el cual puede tener un portal cautivo, de ahi para tener acceso a la red o internet debe estar conectado a un firewall y este a su ves a switches y computadores o servidores.

Normalmente una red puede estar separada de manera física o lógica, esto quiere decir que un controlador wifi puede estar conectado al mismo equipo que le da acceso a la red de los computadores y servidores (o sea, todos conectados al mismo lugar por cables), pero internamente crea redes virtuales y a cada uno le asigna permisos de acceso, por ejemplo para que un pc no se pueda conectar a un servidor o alguien desde el wifi no se conecte a los pc de la red (zonas DMZ, etc).

En este caso lo más lógico es buscar credenciales por defecto y vulnerabilidades a los puntos críticos de la red y estos son los puntos de acceso o controladores de wifi, accediendo a ellos será mas facil acceder a todos los demás equipos y revisar si alguno tiene carpetas compartidas, existe un controlador ldap, etc.

Las herramientas como nmap y msf son solo herramientas, la mayor parte del buen trabajo lo hará tu cerebro, asi que mientra más información tengas de lo que quieras revisar, más efectivo va a ser tu resultado.

Te recomiendo que le des un vistazo a temas sobre como funcionan las redes y servicios, infraestructura, etc, así como le has dedicado tiempo para aprender a usar nmap, de esta manera podrás tener mejores resultados y saber por ejemplo si tu escaneo está siendo bloqueado o necesitas evadir algunas reglas de red.

saludos.

Que bueno es leer a un verdadero genio  ;D

Añadiendo también que las versiones de dichos puntos de acceso es importante, si accede por ejemplo al AirOS de un ubiquiti con contraseñas por defecto, pues podria tener mas informacion, varias veces me paso jeejj saludos muchachones

por ejemplo el exploit ubitiqui_airos_file_upload


recuerda usar ética y no dañar ni desconfigurar nada