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


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: [1] 2
1  Programación / Java / Dimensiones reales de un componente gráfico (JFrame) en: 29 Abril 2020, 16:18
Estaba haciendo unas ventanas en Java cuando me dio por comprobar si realmente el tamaño de éstas se correspondía con el tamaño que había definido en el código fuente y he visto que no es así, no coinciden las medidas.
He estado leyendo sobre las dimensiones del JFrame (heredadas de Window), las dimensiones del Layout (que he probado también a usar diferentes tipos incluso null), los métodos set y get de height, width, minimumSize, preferredSize, bounds,... y todo lo que he ido encontrando por el camino; y no consigo unas conclusiones.

Os dejo un pequeño código de lo último que he probado y los resultados obtenidos:
Código
  1. public class App {
  2.  private Ventana miVentana;
  3.  
  4.  public static void main(String[] args){
  5.    miVentana = new Ventana();
  6.    miVentana.setSize(200, 200);
  7.    miVentana.setVisible(true);
  8.  }
  9. }
  10.  
  11. class Ventana extends JFrame {
  12.  public Ventana(){
  13.    getContentPane().setLayout(null);
  14.  }
  15. }

Establezco el layout a null para evitar que el layout pueda influir en las medidas de la ventana. Le doy un tamaño de 200 x 200 (que no choca con el tamaño mínimo de la ventana) pero al mostrar la ventana esta mide:
  • 234 x 242 (contando la barra de título)
  • 232 x 203 (contando el espacio interior de la ventana. Sin contar barra de título ni bordes)

He probado también a usar el método setBounds() para establecer la posición de la esquina superior izquierda en las coordenadas (0,0), es decir, que la ventana debería aparecer pegada también a la esquina superior izquierda, pero realmente tampoco es así. En el eje X se desplaza 8 píxeles a la derecha, es decir, que la esquina superior izquierda de la ventana aparece en las coordenadas (8,0).
Código
  1. // Sustituir el setSize(200, 200) del codigo anterior por:
  2. miVentana.setBounds(0, 0, 200, 200);

Sé que es un tema muy quisquilloso pero no sé de qué sirve poder establecer tamaños a las ventanas si luego no van a ser reales...
2  Foros Generales / Dudas Generales / Qué navegador usas?? en: 25 Abril 2020, 20:39
No sabía muy bien dónde poner este tema pero ya que es un tema bastante abierto y de opinión pues he decidido ponerlo aquí...

Bueno pues la cosa es que siempre utilizo Chrome tanto en Windows como en Linux por tener integrada la cuenta de Google pero no me agrada mucho el consumo de RAM que tiene y que se abran varios procesos en el administrador de tareas; así que me he planteado si cambiar a otro como Firefox por ejemplo.

Quería ver la opinión del resto de usuarios sobre los navegadores... Los que hayáis probado y los pros y contras que les encontréis. A ver si con este tema, me animo a probar otras opciones.
3  Programación / Java / Problema WindowBuilder (Eclipse) - Ventana Cortada en: 5 Abril 2020, 06:58
El tema es que he instalado WindowBuilder en Eclipse para trabajar de forma gráfica y a la hora de utilizar la pestaña Design (que muestra la ventana con sus componentes), ésta aparece cortada. El lateral derecho se corta y no llegan a verse los botones de minimizar, maximizar y cerrar.
Además si agrando la ventana, los botones desaparecen completamente mientras que si la reduzco de tamaño se ven parcialmente.

He probado también a añadir un botón para ver si eso afecta al posicionamiento de los elementos y de momento parece que no pero de todas formas resulta molesto y me gustaría poder arreglarlo. Dejo una imagen para que se vea más claro lo que explico.


He probado varias versiones de Eclipse (4.15.0 2020-03 y 4.14.0 2019-12), varias versiones de WindowBuilder (la última y una anterior) y varios sistemas operativos (Ubuntu 18.04 y Windows 10) y el problema es el mismo siempre. También cambié los valores de xms y xmx del fichero eclipse.ini porque aparecía cierto lag al trabajar con ello y actualmente los tengo como estaban por defecto:
Código:
-Xms256m
-Xmx2048m

PD: Todo ello utilizando jdk-11.
4  Programación / Bases de Datos / [Resuelto] Insertar Xml con DTD interno en SQL Server en: 21 Marzo 2020, 21:03
Mi problema, como dice el asunto es el siguiente: tengo un fichero xml muy sencillo con un dtd interno y quiero pasar su contenido a una tabla de SQL Server. (Estoy utilizando SSMS 2014). Lo primero que había intentado era:
Código
  1. DECLARE @doc xml
  2. SELECT @doc = (CAST x AS xml) FROM OPENROWSET(BULK 'ruta', SINGLE_BLOB) AS T(x)
  3.  
Pero al intentar ejecutarlo me aparecía el siguiente error:
Código:
No se permite analizar XML con DTD de un subconjunto interno. Utilice CONVERT con la opción de estilo 2 para habilitar la compatibilidad limitada con DTD de subconjuntos internos.

Investigué un poco el uso de CONVERT y cambié la sentencia anterior por:
Código
  1. SELECT @doc = CONVERT(xml, x, 2) FROM OPENROWSET(BULK 'ruta', SINGLE_BLOB) AS T(x)
Parece que se ejecuta correctamente mostrando el siguiente mensaje:
Código:
Se ha quitado del DTD XML uno o más fragmentos XML. Se han omitido los subconjuntos externos existentes.

Pero a la hora de intentar trabajar con la variable @doc me sale el siguiente error:
Código:
Debe declarar la variable escalar "@doc".


Ya de paso aprovecho para preguntar si conocéis de alguna guía sobre SQL Server ya que voy buscando información según la voy necesitando pero no llego a consolidar nada de forma teórica. Muchas gracias desde ya.

PD: El documento xml es válido y como es lógico pero por si acaso lo digo: donde he ido poniendo 'ruta' obviamente es la ruta completa de mi fichero xml pero para no copiarla entera...  :-X


EDIT RESUELTO: Vale, problema resuelto. Tengo el día tonto y estaba ejecutando únicamente la última sentencia. He seleccionado desde el DECLARE hasta el final y ya funciona correctamente... :rolleyes: :rolleyes:
5  Media / Multimedia / Problema para reproducir vídeos de disco duro en tv en: 28 Noviembre 2019, 00:04
Buenas, me ha surgido un problema y ya adelanto que no tengo muchos conocimientos sobre este tema... :rolleyes:
Tengo una serie de vídeos guardados en el disco duro que puedo reproducir sin problemas en el ordenador. El problema viene cuando los conecto por USB a la tv e intento reproducirlos en ella.
Me he fijado en las propiedades de vídeo y son las siguientes:
  • Dimensiones: 1280 x 720
  • Códec: H.264 (Main Profile)
  • Tasa fotogramas: 25 fotogramas/s
  • Tasa bits: N/D
Me comentaron que podía ser por el códec, que igual la tv no era capaz de reproducirlo pero he visto otros vídeos que sí puedo reproducir en ella y tienen el mismo códec. También he podido reproducir vídeos con las mismas dimensiones y no sé si puede estar relacionado con esas tasas... :-\
No sé si alguien puede ayudarme o si es necesario que aporte más información.
6  Programación / Programación C/C++ / Operadores incremento/decremento en prefijo y postfijo. en: 2 Octubre 2019, 14:46
Ya sé que este suele ser un tema básico pero me he encontrado con un resultado inesperado en el funcionamiento de estos operadores.
Mi problema es que estaba implementando un algoritmo de ordenamiento por inserción tanto en C++ como en Java; sin embargo, el resultado obtenido en C++ no era el que esperaba por eso pongo la duda en este foro.
Aquí el código en Java:
Código
  1. public static void insertionSort(int[] numbers){
  2.    for(int i = 1; i < numbers.length; ++i){
  3.        int currentValue = numbers[i];
  4.        int previousIndex = i-1;
  5.        while(previousIndex >= 0 && currentValue < numbers[previousIndex])
  6.            numbers[previousIndex+1] = numbers[previousIndex--];
  7.        numbers[previousIndex+1] = currentValue;
  8.        showArray(numbers);
  9.    }
  10. }

Y aquí el código en C++:
Código
  1. void insertionSort(int *numbers, const int size){
  2.    for(size_t i = 1; i < size; ++i){
  3.        int currentValue = numbers[i];
  4.        int previousIndex = i-1;
  5.        while(previousIndex >= 0 && currentValue < numbers[previousIndex])
  6.            numbers[previousIndex+1] = numbers[previousIndex--];
  7.        numbers[previousIndex+1] = currentValue;
  8.        showArray(numbers, size);
  9.    }
  10. }
Como se puede ver, códigos idénticos. El problema está en la línea 6 del código en C++. He visto que había valores que se repetían y después de un rato investigando he visto que si en C++ se cambia la línea 6 por:
Código
  1. numbers[previousIndex+2] = numbers[previousIndex--];
Entonces sí funciona. Y si se cambia el bucle <while> por:
Código
  1. while(previousIndex >= 0 && currentValue < numbers[previousIndex]){
  2.    numbers[previousIndex+1] = numbers[previousIndex];
  3.    --previousIndex;
  4. }
También funciona correctamente. Entonces el problema sé que está en el orden en que se realiza el decremento. Me gustaría sabes cómo funciona eso en profundidad ya que veo que no funciona igual en Java que en C++.

PD: Agradecería también una explicación del funcionamiento en Java para ver cuáles son las diferencias exactamente. O si es mejor que abra otro tema en el foro de Java para esta parte me lo podéis decir también. :-X :-X
7  Programación / Programación C/C++ / Uso de referencias con memoria dinámica [C++] en: 30 Marzo 2019, 14:23
Cuando trabajamos con memoria dinámica y pasamos una variable (ya sea un array, una variable sencilla o un objeto), hasta el punto que yo sé, lo que estamos pasando es el puntero que apunta a la dirección de memoria donde hemos guardado esa variable. Entonces me surgen las siguientes preguntas:
  • ¿Por qué si pasamos un puntero a una función y queremos reservar memoria una vez en la función, hay que pasar ese puntero además por referencia?
  • Tenemos, imaginemos, un array bidimensional (matriz) que ha sido reservada con memoria dinámica, ¿hay diferencia entre pasarla por referencia o por valor?
En ambos casos estamos pasando la dirección de memoria de su primer elemento, pero viendo que para la primera pregunta que he planteado sí hay diferencia entre usar referencias o no, quería saber si para este segundo caso es más "eficiente" pasarla por referencia.
8  Informática / Hardware / Pendrive dejó de funcionar en: 26 Enero 2019, 23:27
Compré dos pendrives y al principio podía utilizarlos bien, sin problemas. SIn embargo un día estaba formateando uno de ellos cuando por error lo desconecté antes de que terminara el formateo y ha dejado de funcionar por completo. Es decir, que no lo reconoce el pc cuando lo conecto a este.
He probado en distintos puertos de distintos ordenadores y también he probado en distintos sistemas operativos y nada. El pendrive ha quedado inutilizable... :-\
Me gustaría saber si existe alguna solución para recuperar el pendrive. :-X
9  Sistemas Operativos / GNU/Linux / Problema con synaptics [Ubuntu 18.04] en: 26 Enero 2019, 11:51
Recientemente he instalado Ubuntu 18.04 en un laptop junto a Windows 10. Al principio con el escritorio por defecto (GNOME) me di cuenta de que el click derecho del touchpad no funcionaba pero enseguida encontré la solución (usando GNOME Tweaks).

El problema llega cuando decidí cambiar de escritorio a Unity. Con el cambio de escritorio se arregló lo del click derecho automáticamente, sin embargo; noté que ahora lo que no funcionaba era el click tocando en el touchpad (no en el botón que hay en la parte inferior del touchpad). Estuve buscando información y encontré que podía deberse a que no estuviese instalado el <xserver-xorg-input-synaptics>.
Decidí instalarlo mediante
Código:
sudo apt-get install xserver-xorg-input-synaptics

Después de la instalación, reinicié el laptop y me encontré con que ya funcionaba el toque del touchpad. Sin embargo, dejaron de funcionar las teclas de subir/bajar volumen al igual que las combinaciones de teclas que incluían <alt>. (Es decir <ctrl> + <w> por ejemplo funcionaba pero <ctrl> + <alt> + <t> no).
Decidí volver a desinstalarlo y recuperé el uso de esas teclas pero perdiendo de nuevo el toque del touchpad.

Me gustaría saber si hay alguna forma/solución para tener las dos cosas disponibles. Es decir habilitar el toque del touchpad sin perder las funciones de las teclas físicas del volumen ni los atajos que incluyen <alt>. Gracias :-X
10  Programación / Programación C/C++ / Sobrecarga operador -> [C++] en: 6 Enero 2019, 10:30
Tengo la siguiente clase y estoy intentando sobrecargar el operador -> pero sólo puedo sobrecargarlo con constantes, me explico:
Código
  1. class ConjuntoEnteros{
  2.    private:
  3.        std::set<int> private_set;
  4.    public:
  5.        ConjuntoEnteros();
  6.        // ...
  7.        class Iterator{
  8.            private:
  9.                 std::set<int>::iterator private_iterator;
  10.            public:
  11.                  Iterator();
  12.                  // ...
  13.                  int* operator->(){
  14.                      return &*private_iterator;
  15.                  }
  16.         };
  17. };

Entonces si intento sobrecargar ese operador -> me da un error. Lo he conseguido solucionar modificándolo así:
Código
  1. const int* operator->(){
  2.     return &*private_iterator;
  3. }

Entonces no sé si es posible sobrecargar ese operador cómo lo había intentado al principio o siempre tiene que ser constante. :-X
Páginas: [1] 2
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines