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

 

 


Tema destacado: Top 20 herramientas Hacking más populares de 2020


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 84
1  Programación / Programación C/C++ / Re: Duda C++ en: 3 Enero 2021, 17:47 pm
Pues para hacer/entender programas escritos en C++ básicamente... :xD :xD

C++ es un lenguaje que se usa bastante de forma profesional para videojuegos pero tú puedes hacer programas de cualquier tipo con él. Una de las cosas que destacan de este lenguaje es que tiene tantos las características de alto nivel (al igual que lenguajes como Java) como de bajo nivel (al igual que C o ensamblador). Puedes hilar muy fino si así lo necesitas y trabajar directamente con espacios de memoria y punteros, cosa que en otros lenguajes de alto nivel es imposible.
Además, cualquier código escrito en C lo podrás compilar y ejecutar junto a C++ (a la inversa no)
2  Programación / Programación C/C++ / Re: extraer submatrices en: 27 Diciembre 2020, 20:25 pm
Tienes varios errores:
  • Líneas 17 y 18 -> La i y la j marcan el punto de inicio. A cada valor de i y de j le vas a sumar hasta 2 por lo que en las últimas iteraciones de cada bucle se te saldrá fuera de la matriz.
  • Línea 23 -> No es la misma la posición que vas leyendo de la matriz original que la posición en la que tienes que escribir de la submatriz. Aunque hagas la submatriz que empieza por ejemplo en [2][3] tienes que empezar a escribir en
  • , no en [2][3].
  • Líneas 25 - 28 -> No tienes que calcular la suma cada vez que cambias un valor sino cada vez que copias una submatriz completa. Tal y como lo haces ahora mismo estás calculando sumas de submatrices que no existen.

Aparte de los errores, ese programa está muy limitado pues no permite cambiar fácilmente ni el tamaño ni los valores de las matrices. Sería mejor usar constantes para permitir esto más fácilmente.
3  Programación / Programación General / Re: ¿Qué lenguajes de programación son más usados hoy en día? en: 22 Diciembre 2020, 14:03 pm
Si tu objetivo es aprender un lenguaje en profundidad lo mejor es que primero tengas claros tus objetivos. Prácticamente todos los lenguajes sirven para prácticamente todo pero en muchas ocasiones hay un lenguaje que resalta sobre el resto para una tarea específica.

Sobre API Rest no tengo conocimientos por lo que no puedo decir nada pero sobre POO está claro que es uno de los paradigmas de programación más utilizados, sino el más. Al final el mundo en general no se representa con variables sueltas sin más sino que todo son objetos, cada objeto tiene sus características y sus comportamientos y la POO justo define eso.

En cuanto a lenguajes: es cierto que .NET y Java son de los lenguajes más demandados y más completos que existen. Además ambos permiten programar mediante POO y a mi parecer tienen una buena curva de aprendizaje. En cambio de poco te sirven si lo que quieres es programador controladores o servicios del sistema por ejemplo, para esta tarea siempre será mucho mejor aprender C. Por eso digo que lo importante es que primero definas tus propósitos (sistemas operativos, juegos, análisis estadístico, desarrollo móvil (Android, iOS), ...) y cuando lo tengas te será muy fácil elegir el lenguaje más adecuado para ello (C, C++, Python, R, Java, Kotlin, Swift, Flutter,...) sin olvidar toda la parte de web (PHP, diversos frameworks en los que no estoy al día...) o las bases de datos (SQL).

Y si no tienes muy claro lo que hacer o estás dando tus primeros pasos Java y .NET (C#) creo que son dos de las mejores opciones para empezar porque como ya he dicho son lenguajes muy completos y que permiten hacer muchas cosas. Hay gente que prefiere empezar con lenguajes más sencillos como Python pero en mi opinión estos lenguajes enmascaran demasiado la programación. Si aprendes un lenguaje como Java, C# o similares te será más sencillo dar el paso a Python y similares, que al contrario.

Mucha suerte y recuerda que puedes probar todos los que te causen curiosidad y quedarte al final con el/los que más te guste/n.
4  Programación / Java / Re: [JAXB] Generar xsd mediante schemagen en: 22 Diciembre 2020, 01:17 am
que tal doc? que es la que hay?

quitale el
Código
  1. @XmlRootElement
a las superclases y avisa que tal... o sea a la superclase Vehiculo
He probado el cambio que comentas y el resultado sigue sin ser satisfactorio. El error que aparecía sigue apareciendo y además ahora tampoco aparece el elemento Vehiculo en el xsd.
El resultado es el siguiente:
Código
  1.  <xs:element name="Furgoneta" type="furgoneta"/>
  2.  
  3.  <xs:element name="Vehiculos" type="conjuntoVehiculos"/>
  4.  
  5.  <xs:complexType name="conjuntoVehiculos">
  6.    <xs:sequence>
  7.        <xs:element ref="Furgoneta" minOccurs="0" maxOccurs="unbounded"/>
  8.    </xs:sequence>
  9.  </xs:complexType>
  10.  
  11.  <!-- ... -->
5  Programación / Programación General / Re: ¿que se representa en las clases y diagramas de clases uml? en: 20 Diciembre 2020, 16:26 pm
Tal y como dices, los diagramas uml se asemejan bastante a las clases cuando hablamos de POO, sin embargo; que aparezcan relaciones no significa que hagan referencia a bases de datos. Las relaciones son necesarias también para saber cómo interactúan unas clases con otras y además existen pequeños detalles que se pueden apreciar en la implementación.

Te pongo un ejemplo donde creo que se puede ver bien:
Imagina que estás creando una aplicación para un banco donde entre otras muchas cosas tienes una clase Cliente y otra clase Cuenta. Según cómo definas la relación entre ambas clases tendrás una estructura u otra.
  • Según la cardinalidad: Definimos si hace falta utilizar una colección de datos (array u otras) para relacionar los datos. Por ejemplo: "Un cliente puede tener una o más cuentas pero una cuenta solo puede ser de un cliente" esto suena a diagrama entidad-relación de bases de datos pero también se aplica a las clases de tu programa. Las clases de tu aplicación quedarían así:
Código:
class Cuenta {
  string numeroCuenta;
  Cliente propietario;
  //...
}

class Cliente {
  string nombre;
  Array<Cuenta> cuentas;
  //...
}

  • Según la dirección: La dirección de la relación indica qué clase conoce (y puede acceder) a las instancias de la otra. Aunque en UML se suelen usar relaciones bidireccionales (sin punta de flecha), también se pueden hacer unidireccionales. Por ejemplo imagina la relación anterior Cliente-Cuenta pero en este caso unidireccional: Cliente -> Cuenta (solo el cliente conoce sus cuentas entonces desde un cliente puedes acceder a sus cuentas pero desde una cuenta no puedes acceder a su propietario) Esto en tus clases se representaría así:
Código:
class Cuenta {
  string numeroCuenta;
}

class Cliente {
  string nombre;
  Array<Cuenta> cuentas;
}

Mediante UML se puede llegar a un nivel de precisión muy alto aunque no está muy estandarizado. Sí que existen algunos estándares a seguir pero a la hora de la verdad cada uno utiliza los elementos que cree convenientes para representar la información.
Hace un año tuve que preparar unas cosas mediante UML y me costó mucho trabajo encontrar algo de información en claro así que al final acabé leyendo por encima la guía "UML 2 Certification Guide Fundamental & Intermediate Exams (Tim Weilkiens y Bernd Oestereich)" y más o menos pude apañarme aunque es muy extensa pues está preparada precisamente para los exámenes de certificación en UML.

Yo creo que al final UML está ahí como un modelo teórico para representar las ideas de forma rápida y más o menos común para que todo el que conozca UML pueda entenderlo pero al final cada empresa o grupo de trabajo se crea sus propias anotaciones para entenderse. Mientras tanto emisor como receptor entiendan el diagrama, queda muy abierto a posibilidades.
6  Programación / Java / Re: [JAXB] Generar xsd mediante schemagen en: 19 Diciembre 2020, 13:47 pm
Fichero ConjuntoVehiculos.java
Código
  1. @XmlRootElement(name = "vehiculos")
  2. @XmlAccessorType(XmlAccessType.FIELD)
  3. public class ConjuntoVehiculos {
  4.  @XmlElementRefs({
  5.    @XmlElementRef(name = "Vehiculo", type = Vehiculo.class),
  6.    @XmlElementRef(name = "Coche", type = Coche.class),
  7.    @XmlElementRef(name = "Furgoneta", type = Furgoneta.class)
  8.  })
  9.  private ArrayList<Vehiculo> vehiculos;
  10.  //...
  11. }

Fichero Vehiculo.java
Código
  1. @XmlRootElement(name = "Vehiculo")
  2. @XmlAccessorType(XmlAccessType.FIELD)
  3. public class Vehiculo implements Serializable {
  4.  //...
  5. }

Fichero Coche.java
Código
  1. @XmlRootElement(name = "Coche")
  2. @XmlAccessorType(XmlAccessType.FIELD)
  3. public class Coche extends Vehiculo {
  4.  //...
  5. }

Fichero Furgoneta.java
Código
  1. @XmlRootElement(name = "Furgoneta")
  2. @XmlAccessorType(XmlAccessType.FIELD)
  3. public class Furgoneta extends Vehiculo {
  4.  //...
  5. }

Y el schema xsd que quiero obtener es:
Código
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.  
  4.  <xs:element name="Coche" type="coche"/>
  5.  
  6.  <xs:element name="Furgoneta" type="furgoneta"/>
  7.  
  8.  <xs:element name="Vehiculo" type="vehiculo"/>
  9.  
  10.  <xs:element name="Vehiculos" type="conjuntoVehiculos"/>
  11.  
  12.  <xs:complexType name="conjuntoVehiculos">
  13.    <xs:sequence>
  14.      <xs:choice minOccurs="0" maxOccurs="unbounded">
  15.        <xs:element ref="Vehiculo"/>
  16.        <xs:element ref="Coche"/>
  17.        <xs:element ref="Furgoneta"/>
  18.      </xs:choice>
  19.    </xs:sequence>
  20.  </xs:complexType>
  21.  
  22.  <xs:complexType name="vehiculo"><!-- ... --></xs:complexType>
  23.  
  24.  <xs:complexType name="coche"><!-- ... --></xs:complexType>
  25.  
  26.  <xs:complexType name="furgoneta"><!-- ... --></xs:complexType>
  27. </xs:schema>

Pero como no reconoce la clase Coche.class, me genera el siguiente xsd:
Código
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.  
  4.  <xs:element name="Furgoneta" type="furgoneta"/>
  5.  
  6.  <xs:element name="Vehiculo" type="vehiculo"/>
  7.  
  8.  <xs:element name="Vehiculos" type="conjuntoVehiculos"/>
  9.  
  10.  <xs:complexType name="conjuntoVehiculos">
  11.    <xs:sequence>
  12.      <xs:choice minOccurs="0" maxOccurs="unbounded">
  13.        <xs:element ref="Vehiculo"/>
  14.        <xs:element ref="Furgoneta"/>
  15.      </xs:choice>
  16.    </xs:sequence>
  17.  </xs:complexType>
  18.  
  19.  <xs:complexType name="vehiculo"><!-- ... --></xs:complexType>
  20.  
  21.  <xs:complexType name="furgoneta"><!-- ... --></xs:complexType>
  22. </xs:schema>
7  Programación / Java / Re: [JAXB] Generar xsd mediante schemagen en: 19 Diciembre 2020, 00:50 am
El el mismo directorio cual? original del proyecto? o en otra carpeta ?
Para simplificarlo y no tener que lidiar con los paquetes originales del proyecto lo que hice fue copiar todos los .java en un directorio llamémoslo CodigoFuente/ y modifiqué la sentencia package y los imports de los .java (es decir, los eliminé). El directorio en el que estaba trabajando tenía la siguiente estructura:
Código:
CodigoFuente/
|_ ConjuntoVehiculos.java
|_ Vehiculo.java
|_ Coche.java
|_ Furgoneta.java
Entonces desde línea de comandos al ejecutar
Código:
C:\...\CodigoFuente>schemagen -d . -cp *.java -encoding utf-8
me generaba el fichero schema1.xsd en el directorio CodigoFuente/ pero salía en el cmd el error que cité en el otro mensaje de que no se reconocía el símbolo Coche.class y en el xsd me incluía correctamente todas las clases (como xs:element) menos la clase Coche que no aparecía.
Lo que me parece raro pues la clase Coche.java tiene prácticamente la misma estructura que Furgoneta.java (solo cambia algún atributo) y las anotaciones de ambas clases también son iguales. Me dio que pensar que quizás al pasar como argumento *.java se estuviesen compilando los ficheros en este orden:
1. Vehiculo.java -> Vehiculo.class
2. Furgoneta.java -> Furgoneta.class
3. ConjuntoVehiculos.java -> ConjuntoVehiculos.class
4. Coche.java -> Coche.class
Y quizás por eso al compilar ConjuntoVehiculos.java no se reconoce el símbolo Coche.class (porque todavía no existe).

Tal cual doc asi mismo, es, cuando compila los .java estos pasan a ser .class que sera usados luego para crear los .xsd
Respecto a esto, noté que aunque schemagen compile los .java en .class, estos no aparecen en el directorio en el que se está trabajando (CodigoFuente/ en este supuesto). Por eso intenté compilarlos yo y tras varios intentos vi que la única forma en que funcionaba es teniendo todos los ficheros compilados ya y pasar a schemagen únicamente el .java que contiene a los demás. Es decir, teniendo:
Código:
CodigoFuente/
|_ ConjuntoVehiculos.java
|_ ConjuntoVehiculos.class
|_ Vehiculo.java
|_ Vehiculo.class
|_ Coche.java
|_ Coche.class
|_ Furgoneta.java
|_ Furgoneta.class
Y ejecutando:
Código:
C:\...\CodigoFuente>schemagen -d . -cp ConjuntoVehiculos.java -encoding utf-8
Por lo tanto no entiendo cuándo es necesario compilar los .java a .class antes de ejecutar schemagen y qué argumentos hay que pasarle a schemagen con la opción -cp. :huh:

PD: Gracias por responder. Siendo un tema tan raro ya pensaba que no iba a tener respuestas.  :-X
8  Programación / Java / [JAXB] Generar xsd mediante schemagen en: 18 Diciembre 2020, 12:53 pm
He tenido problemas para generar un schema xsd a partir de unas clases .java mediante el comando schemagen.

Tenía las siguientes clases (todas ellas en el mismo directorio . para simplificar):
Código:
ConjuntoVehiculos
Vehiculo
Furgoneta extends Vehiculo
Coche extends Vehiculo
Entonces al ejecutar:
Código:
schemagen -d . -cp *.java -encoding utf-8
Se me generaba el schema xsd pero me aparecía el siguiente mensaje y no se incluía el elemento Coche en el schema.
Citar
ConjuntoVehiculos.java:14: error: cannot find symbol
                        @XmlElementRef(name = "Coche", type = Coche.class),
                                                                                             ^
    symbol:   class Coche
    location: class ConjuntoVehiculos
Esa anotación @XmlElementRef la tengo junto a otras dos que hacen referencia a Vehiculo y Furgoneta y estas otras no producen ningún problema. He comprobado los nombres y está todo bien escrito.

He hecho varias pruebas incluyendo los ficheros .java uno por uno y compilándolos primero (aunque por lo que he visto, schemagen debe llamar internamente a javac para compilar los ficheros fuente) pero obtenía más errores y no me generaba el schema.

Al final después de mucho probar me ha dado por compilar los ficheros .java (en el mismo directorio) y ejecutar:
Código:
schemagen -d . -cp . ConjuntoVehiculos.java -encoding utf-8
Con esto sí he conseguido generar el schema correctamente, sin errores e incluyendo todos los elementos pero no entiendo por qué ha funcionado. Es decir, no entiendo cómo funciona schemagen. He buscado en muchas webs y en todas aparece un ejemplo sencillo que funciona con el primer comando que he probado y no se explica nada más.

Espero que alguien conozca esta herramienta y pueda ayudarme. :-X

PD: Estoy utilizando schemagen 3.0.0 (recientemente descargado junto con las otras herramientas de JAXB).
9  Sistemas Operativos / GNU/Linux / Re: [CURSO GRATIS] Dominar Linux y su Consola en: 15 Diciembre 2020, 12:40 pm
Me parece un poco pretencioso, no crees? Y lo digo desde la crítica constructiva, no se me malentienda.
Para todo aquel que le interese conocer a fondo como manejar y dominar el sistema operativo LINUX,
He entrado a ver los vídeos para conocer a fondo Linux y solo he visto un poco de introducción, una instalación (en máquina virtual) y varios comandos básicos de consola.

les dejo este curso completisimo y GRATIS.
No puede ser un curso muy completo cuando se llama "Dominar Linux y su Consola" y de 7 vídeos que tiene el curso y una duración de ~1 hora, solo 3 de ellos (~30 minutos) tratan realmente sobre la consola y muestran comandos muy sencillos y básicos.

Un nombre más correcto me parece: Introducción a GNU/Linux.
No estoy diciendo que el curso sea malo. Pero el título debería ser acorde a sus contenidos y una explicación de lo que es GNU/Linux, una introducción a sus características y varios comandos básicos me parece demasiado presuntuoso como para decir que tras ver esos vídeos ya domino Linux a fondo.
El clickbait está muy bien para conseguir que entre más gente al curso pero no va a conseguir que se queden. Hay que ser fieles a la realidad y ese curso no es (al menos de momento) para personas con conocimientos avanzados de Linux sino para gente que está empezando. Habrá quienes estén empezando y no entren porque el título les parezca demasiado avanzado y otros que tengan más nivel, entren y no se queden porque los contenidos no son lo que el título promete.

Suerte  :-X
10  Sistemas Operativos / Windows / Re: Optimizar windows 10 en: 15 Diciembre 2020, 12:24 pm
Para equipos tan limitados yo siempre he recomendado distribuciones GNU/Linux. Aunque hayas cambiado el disco duro por un SSD lo cual se notará (aunque 120 GB tampoco dan para mucho), 2 GB de RAM me parecen muy muy limitados para un Windows 10.
Claro está que es importante conocer el uso que se le va a dar al ordenador pero siendo tan antiguo no creo que se vaya a usar para edición de vídeos o cosas por el estilo. Si el uso que se le va a dar es el típico de cualquier usuario promedio (internet, editor de texto, reproductor multimedia,...) un sistema Linux cumplirá mucho mejor que Windows.

Si por lo que sea quieres o necesitas seguir utilizando Windows, no puedo ayudarte porque desconozco como optimizarlo pero sí te digo que yo he instalado Linux en sistemas con más recursos que ese y el cambio ha sido muy satisfactorio.

Suerte  :-X
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 84
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines