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ú

Temas - 4dr14n31t0r

#1
He visto los recursos que aparecen entre los mensajes fijados arriba del todo.

http://foro.elhacker.net/redes/libros_de_redesnetworking_lectura_recomendada-t303472.0.html

Pero lo que yo busco es algo que se enfoque mas que nada en los routers, de tal modo que una persona que nunca haya hecho nada con los routers pueda entender todo lo que aparece cuando accedes al router desde tu equipo y asi saber como configurar las cosas y que significan. Es que me meto en la IP 192.168.1.1 para acceder al router porque lo que realmente quiero es hacer mi IP pública de modo que pueda acceder desde otro ordenador en otra red, pero ya que estoy me gustaría antes también saber que es lo que se puede hacer con el router y cómo y que significa cada cosa. Si alguno de los recursos que aparecen en el link proporcionado cumple con mis requisitos disculpen las molestias. El caso es que solo les he hechado un vistazo al título de cada libro pero no se lo que contiene.

PD: Si es posible que sea un libro gratis o algún tutorial de internet, aunque si el libro o manual es bueno creo que no me importaría pagar
#2
O mejor dicho, ¿Es posible?
#3
Estoy cursando el 2º año del ciclo superior de Desarrollo de Aplicaciones Informaticas (DAM) y tengo un profesor que me da 2 asignaturas: Programacion de dispositivos moviles (En otras palabras, Android) y Horas de libre configuracion, en la que estamos viendo como programar para IOS.

El caso es que mi profesor dice que si suspendo una de esas 2 asignaturas al final de curso suspendo las 2.
Pero esto no tiene sentido, asi que mi pregunta es
¿Realmente esta permitido hacer lo que el dice de suspender 2 asignaturas si solo te queda una?
Y si es cierto que se puede ¿Alguien puede explicarme que logica tiene esto?  :-\
#4
Programación C/C++ / VAOs en OpenGL
28 Enero 2017, 19:22 PM
Por lo que tengo entendido, se supone que si llamas a glBindVertexArray, a partir de ahi cuando llames al metodo glBindBuffer el buffer asociado se guardara en el VAO. De modo que si haces esto:

Código (cpp) [Seleccionar]
glBindVertexArray(VAOs[0]);
glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_DYNAMIC_DRAW);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,2*sizeof(GLfloat),(void*)0);


Entonces a partir de aqui cada vez que hagas esto:
Código (cpp) [Seleccionar]
glBindVertexArray(VAOs[0]);

Automaticamente seria como si estuvieras haciendo esto: (Aunque no lo "haces" porque ya esta hecho, solo restauras el buffer que ya esta "hecho")
Código (cpp) [Seleccionar]

glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_DYNAMIC_DRAW);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,2*sizeof(GLfloat),(void*)0);


Pero cuando hago varios VAOs y a cada VAO le pongo un VBO, por alguna razon cuando pongo el primer, segundo o tercer VAO y compruebo cual es el VBO actual, se me queda en el ultimo VBO con el que llame al metodo glBindBuffer. ¿Por que? Yo digo algo asi:
Código (cpp) [Seleccionar]
glBindVertexArray(VAOs[0]);
glBindBuffer(GL_ARRAY_BUFFER, VBOs[0]);
glBindVertexArray(VAOs[1]);
glBindBuffer(GL_ARRAY_BUFFER, VBOs[1]);
glBindVertexArray(VAOs[2]);
glBindBuffer(GL_ARRAY_BUFFER, VBOs[2]);

glBindVertexArray(VAOs[0]);
GLint n;
glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &n);
std::cout << "VBO ACTUAL: " << n << std::endl;//Imprime VBOs[2] pero deberia imprimir VBOs[0]
#5
¿Como implemento el metodo 'foo' fuera de la clase en este caso?
Código (cpp) [Seleccionar]
class
{
    public:
        void foo(void);
} o;
No me puedo referir al metodo desde fuera del mismo por que para eso necesito el nombre de la case, pero esta es anonima.
#6
En primer lugar, disculpen si me he equivocado de foro para hacer este post, es que no estoy seguro de cual es el mas adecuado  :-\

En segundo lugar, a lo que vamos...
Por lo que tengo entendido, el back-buffer se utiliza para el renderizado de la imagen y el front-buffer para pintar la imagen en la pantalla. Se supone que cuando se termina de renderizar una imagen hay que intercambiar los dos buffers para que el programa se ponga a pintar la imagen mientras se renderiza la otra. El caso es que si solo voy a pintar un triangulo en la ventana, no deberia de tener sentido intercambiar los buffers para volver a pintar la misma imagen que ya esta pintada, de modo que probe a ver que pasa si solo intercambio los buffers una vez para pintar la imagen, pero si solo lo hago una vez toda la pantalla entera parece ralentizarse mucho, es decir, que si quiero mover la ventana de un sitio a otro tarda como 10-20 segundos en cambiar a la nueva posicion cuando la muevo. Ademas tambien parece tardar mucho en minimizar o maximizar o mover otras ventanas. ¿Por que? ¿Como funciona el doble buffer entonces?

PD:Estoy siguiendo este tutorial: https://learnopengl.com/
Si me recomiendan uno mejor se los agradezco.
El codigo fuente con el que estaba practicando esta aqui: https://learnopengl.com/code_viewer.php?code=getting-started/hellowindow2
#7
Con la clase URL es bastante facil obtener el fichero HTML de una determinada direccion, pero ¿Que pasa si necesitas registrarte antes en otra pagina? Es decir supongamos que si me registro en una pagina web se me carga una pagina HTML pero si no lo hago se me carga otro HTML aun siendo en ambos casos la misma direccion url. ¿Como puedo obtener ambos ficheros HTML? ¿Como puedo ingresar como un determinado usuario automaticamente? Y sobre todo... ¿Como puedo rellenar automaticamente los campos de algun formulario y enviarlo, tambien automaticamente? En algunos casos los datos del formulario se envian a traves de la direccion url, por lo que en esos casos seria facil, Pero ¿que hay de los otros casos en los que no es asi?
#8
Supongamos que tengo 3 clases: A, B y C, y que la clase A tiene un metodo: getB(), que devuelve un objeto de la clase B, y que B tambien tiene un metodo, getC(), que devuelve un objeto de la clase C.

Si hiciera lo siguiente:
Código (java) [Seleccionar]
A a = new A();
B b = a.getB();
C c = b.getC();
Tendria que importar la clase A,B y C. Sin embargo, si yo hiciera esto:
Código (java) [Seleccionar]
A a = new A();
C c = a.getB().getC();
No tendria que importar la clase B. ¿Por que?
Si es porque la clase B ya importa la clase C, entonces ¿Por que en el primer caso tengo que importarla si ya viene incluida al incluir C?

EDIT:Voy a poner la definición de las clases A, B y C para que me entendáis mejor:
Código (java) [Seleccionar]
package paquete_a;

import paquete_b.B;

public class A{
   public B getB(){
       return new B();
   }
}
Código (java) [Seleccionar]
package paquete_b;

import paquete_c.C;

public class B{
   public C getC(){
       return new C();
   }
}
Código (java) [Seleccionar]
package paquete_c;

public class C{
   //Esta clase no tiene nada
}
Código (java) [Seleccionar]
package test;

import paquete_a.A;
import paquete_b.B;
import paquete_c.C;

public class Test_1{
   public static void main(String[] args){
       A a = new A();
       B b = a.getB();
       C c = b.getC();
   }
}
Código (java) [Seleccionar]
package test;

import paquete_a.A;
//No es necesaria la importación de la clase B
import paquete_c.C;

public class Test_2{
   public static void main(String[] args){
       A a = new A();
       C c = a.getB().getC();
   }
}
EDIT 2: Vamos a suponer que en C++ tenemos 3 archivos headers (esos que tienen la extension ".h"): Uno para la clase A, otro para la clase B y otro para la clase C, que basicamente seran iguales que las clases que acabo de mostrar, pero con la unica diferencia de que estan escritos en C++. Supongamos tambien que tenemos 2 archivos: test1.cpp y test2.cpp, que solo tienen un metodo main que simplemente hacen lo mismo que el metodo main de la clase Test_1 y Test_2 de java que he mostrado antes para ver como seria un ejemplo. Bueno pues en C++ cuando tu incluyes un archivo (En este caso, algo como #include A.h ó #include B.h) lo que realmente pasa es que se "inserta" tal cual el archivo encima de aquel en el que lo incluyes, de modo que si un archivo solo tiene el siguiente codigo:
Código (cpp) [Seleccionar]
#include <stdio.h>

int main(
y otro incluye al anterior y solo tiene el siguiente codigo:
Código (cpp) [Seleccionar]
){
    printf("Hola Mundo");
}
Compilará sin problemas y si ejecutamos nos mostrará el mensaje "Hola Mundo".
Ahora bien, si en el archivo que contiene la clase A incluyo el archivo de la clase B, y en el archivo que contiene la clase B incluyo el archivo que contiene la clase C, entonces el resultado seria el mismo que si hubiese creado un archivo con las 3 clases. Si en el archivo test1.cpp incluyo el archivo que contiene la clase A, entonces nisiquiera tendre que incluir el archivo que contiene la clase C para que el codigo equivalente de C++ de este trozo de codigo
Código (java) [Seleccionar]
    A a = new A();
    B b = a.getB();
    C c = b.getC();
Se pueda compilar y ejecutar sin problemas. Sin embargo con java no pasa esto, sino que algunas veces (Como el primer caso que muestro arriba del todo) hay que importar la clase B, y en otros (Como el ejemplo de codigo que viene inmediatamente despues) no es necesario para ejecutar getC(). ¿Por que? ¿Por que unas veces si y otras veces no?
#9
En firefox tu puedes ejecutar una funcion de una determinada pagina web utilizando la consola web que aparece cuando pulsas F12.
Pero ¿Como puedes hacerlo sin la consola de firefox? Es decir, desde java o C++, o simplemente desde la terminal de linux, por ejemplo.
Conectarse a una pagina web es facil. En java puedes utilizar la clase URL para obtener el archivo HTML de la pagina. Pero lo que me interesa es ejecutar una funcion de una pagina directamente.
#10
En este link que solo pongo como ejemplo (http://www.tumangaonline.com/lector/DICE-El-cubo-que-lo-cambia-tod/8965/0.00/53), si se van a la sección de comentarios abajo del todo, podran hacer un comentario si introducen su cuenta gmail. Sin embargo, cuando lo hacen les saldra una ventana de confirmacion de google. ¿Como se hace esto? Tambien ocurre si usan cualquier otra de las cuentas que le ofrecen usar. (Como la de facebook o twitter como en muchos casos)
#11
Imaginense que por ejemplo tengo en C una variable de tipo string que contiene la sentencia que hay que ejecutar para hacer una consulta en mysql, y quiero enviar ese string al standard input del mysql para ejecutar el script. O imaginense que tengo un string bastante largo con muchas lineas y quiero usar el programa grep para encontrar un trozo de texto del mismo. Solo pongo estos como ejemplos para que entiendan lo que realmente quiero. ¿Podrian decirme como se puede hacer? ¿Que metodos hay que usar y como y de que librerias, etc?
#12
Programación C/C++ / Problemas con los FIFOs
5 Noviembre 2016, 21:25 PM
En un archivo tengo el siguiente codigo fuente:#include <stdio.h>
#include <fcntl.h>

int main(void){
   mkfifo("FIFO",0777);
   int fd = open("FIFO",O_WRONLY);
   int n = 1234;
   puts("ESCRIBIENDO DATO\n");
   write(fd,&n,sizeof(int));
   puts("DATO ESCRITO\n");
   close(fd);
   return 0;
}


Y en otro, este:#include <stdio.h>
#include <fcntl.h>

int main(vodi){
   int fd = open("FIFO",O_RDONLY);
   int n;
   puts("LEYENDO DATO\n");
   read(fd,&n,sizeof(int));
   printf("DATO LEIDO: %d\n",n);
   read(fd,&n,sizeof(int));
   printf("DATO LEIDO OTRA VEZ: %d\n",n);
   close(fd);
   return 0;
}


Ejecuto el primer programa en segundo plano, y despues el segundo programa, y la salida que generan es la siguiente:ESCRIBIENDO DATO

DATO ESCRITO
LEYENDO DATO

DATO LEIDO: 1234
DATO LEIDO OTRA VEZ: 1234
Según tengo entendido, cuando un programa lee de un fifo y en este no quedan datos que leer, espera a que otro programa escriba algo en el para leer.
¿Por qué lee 2 veces el mismo dato en vez de quedarse bloqueado hasta que algún otro programa vuelva a escribir en el fifo?
Es mas, ¿Por qué entre "ESCRIBIENDO DATO" y "DATO ESCRITO" hay dos lineas cuando solo imprimo una al final de cada mensaje?
¿Se os ocurre alguna forma de hacer que el programa se detenga hasta que no se escriban nuevos datos en el fifo en vez de leer 2 veces el mismo dato?
#13
¿Como puedo hacerlo? ¿Hay algun tutorial en internet sobre esto? No solo gmail, sino de cualquier tipo en general como hotmail yahoo etc.
#14
Cuando yo veo algo como
Código (cpp) [Seleccionar]
foo(bar = baz)lo que me imagino que ocurre es que se lee el contenido del registro de baz y se guarda en la pila para luego acceder al registro de la variable bar y pasarle el valor que se guardó en la pila, y despues sin eliminar el valor de la pila se le pasa tambien al parametro de la funcion foo, por lo que es mas eficiente (aunque muy poco, pero mas eficiente) que si hago algo como esto:
Código (cpp) [Seleccionar]
bar = baz;
foo(bar);
Ya que, en este caso, copio y pego el valor del registro en la pila 2 veces.

Asi es como me lo imagino, pero en realidad no tengo ni idea de como funciona. ¿Me equivoco?

¿Y si hiciera esto?
Código (cpp) [Seleccionar]
a = b = c;¿Pasaria algo parecido?
#15
Si le quiero cambiar el nombre del getter hago algo asi:
Código (objc) [Seleccionar]
@property(getter=loquesea) NSString* propiedad
Si le quiero cambiar el setter:
Código (objc) [Seleccionar]
@property(setter=loquesea) NSString* propiedad
Pero si le quiero cambiar las dos cosas:
Código (objc) [Seleccionar]
@property(getter=loquesea,setter=loquesea2) NSString* nombre
Me da error.¿Estoy haciendo algo mal?
#16
Y ¿Cual de los 2 creen que es mejor?
Me gustaria hacer un programa parecido a los que se usan para dibujo tecnico, de esos que sirven para hacer rectas y circunferencias para hacer planos y diseños. De todos modos, es probable que mas tarde no me limite solo a ese programa y me dedique a hacer algunos jueguecillos.
#17
Programación C/C++ / Programar graficos en c++
9 Octubre 2016, 22:18 PM
La mejor libreria que he encontrado hasta el momento (segun las opiniones que veo en internet) es la de openGL ¿Que opinan ustedes?.
De todos modos, he intentado instalar opengl para dev c++ tropecientas veces y me sigue dando fallos de todo tipo. ¿Alguien podria hacerme el favor de decirme como instalarlo? Alguien que lo haya conseguido, por supuesto.
La mayoria de los tutoriales te dicen que te descarges una carpeta y de ahi copies y peges los archivos que contienen en las ubicaciones que te van diciendo (una de ellas, C:\windows\system). ¿Hay alguna mejor manera de hacerlo?
#18
Buscando en internet diferencias entre C y Objective-C me encontre con un usuario que explicaba que cualquier programa escrito en C siempre funcionará en Objective-C mientras que en C++ no siempre funcionaria

Aqui esta el comentario que dice eso (esta en ingles)
http://stackoverflow.com/a/13153293

Asi que... ¿Que parte de C no es compatible con C++?
#19
Programación C/C++ / Maquina virtual de C
1 Octubre 2016, 00:21 AM
Del mismo modo que hay una maquina virtual para java, ¿Lo hay tambien para C para no tener que compilar el codigo fuente en cada sistema operativo? Si lo hubiera, solo tendrias que llevarte el ejecutable de C a otros ordenadores y olvidarte de tener que compilarlo.
No se si me he explicado bien.
#20
Estructura o clase, me da lo mismo.

El problema es si hay alguna forma de hacerlo sin tener que crear una nueva variable.
Por ejemplo:
Código (cpp) [Seleccionar]
struct E{
   int x;
   E(int n) : x(n) {};
};
int main(){
E e (43);
//e (21) <- No es valido, tendria que crear una nueva variable.
E e2 (21);
e = e2;
}

¿Alguna idea de como hacer esto sin tener que recurrir a una variable auxiliar?
#21
Programación C/C++ / arrays y punteros.
24 Septiembre 2016, 00:48 AM
Código (cpp) [Seleccionar]
int array[5];
array[0] = 12;
std::cout << &array << std::endl;//1
std::cout << array  << std::endl;//2
std::cout << *array << std::endl;//3


Con el codigo anterior se puede apreciar claramente que la direccion de memoria en la que esta localizado el array (1) coincide con la direccion de memoria a la que apunta el array (2). En otras palabras: los arrays son punteros que se apuntan a si mismos.

Sin embargo, si un puntero se apunta a si mismo, entonces el operador de dereferencia (el asterisco) nos devolvera la direccion de memoria del array otra vez, ya que es lo que contiene la variable. Sin embargo, en vez de eso se nos muestra el int que hayamos guardado ahi. (En este caso, el numero 12). La pregunta es ¿Por qué? Es mas ¿Cómo es posible? Según esto, estamos guardando 2 valores completamente diferentes al mismo tiempo en la misma ubicacion: la direccion de memoria del array(y del primer elemento del mismo array), y el numero 12.

Aqui dejo el codigo completo para que no tengais mas que copiar y pegar directamente:
Código (cpp) [Seleccionar]
#include <iostream>

int main(int argc, char** argv)
{
int array[5];
array[0] = 12;
std::cout << &array << std::endl;//1
std::cout << array  << std::endl;//2
std::cout << *array << std::endl;//3
return 0;
}


Y aqui el link a un entorno de desarrollo online con el codigo para que no tengais que molestaros en abrir ningun programa para probarlo:
https://goo.gl/7LWmg4
#22
Cuando creo variables de estos tipos y le asigno un caracter, cuando lo imprimo por pantalla tengo que hacerle casting de char para ver el caracter. ¿Para que sirven entonces? Ya hay tipos de variables con el mismo tamaño que estos.
#23
Parece que hay 3 formas de inicializar variables, pero no me queda claro cuando usar una u otra.

Código (cpp) [Seleccionar]
int n1 = 2;//c-like
int n2 (3);//constructor
int n3 {5};//uniform


Las 3 formas funcionan igual y hacen lo mismo de la misma manera.
Mi pregunta es ¿Cuando es mas recomendable usar una u otra?
#24
Java / ¿Para que sirve ImageObserver?
9 Abril 2016, 17:18 PM
Tengo entendido que el metodo que tiene simplemente devuelve un booleano para indicar si se ha cargado o no la imagen y que se usa cuando se utilizan imagenes de internet, pero ¿Podrían poner un ejemplo? Esque no entiendo, por ejemplo, como debería ser implementado ese método o como influye el hecho de que usemos null para pintar una imagen cuando esa imagen esta en el ordenador en lugar de internet. He buscado mucho en internet al respecto pero en todos los ejemplos que encuentro solo veo que utilizan null.
#25
Java / Imagenes en java
8 Abril 2016, 18:00 PM
Cuando ejecuto el siguiente codigo utilizando Toolkit, no aparece la imagen hasta que le cambio el tamaño a la ventana. Se que se puede solucionar utilizando ImageIO o ImageIcon, pero me gustaria saber que diferencia hay entre usar uno y otro y por que tengo que cambiar el tamaño de la ventana cuando utilizo Toolkit para que se muestre la imagen.package main;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;

import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

public static void main(String[] args) throws IOException{
JFrame ventana = new JFrame();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image imagen =
//DESCOMENTA UNO DE LOS TRES COMENTARIOS SIGUIENTES PARA APRECIAR LA DIFERENCIA ENTRE UNO Y OTRO
// ImageIO.read(new File("IMAGEN.png"));
// Toolkit.getDefaultToolkit().getImage("IMAGEN.png");
// new ImageIcon("IMAGEN.png").getImage()
JPanel panel = new JPanel(){
private final static long serialVersionUID = 1L;
@Override
public void paint(Graphics g) {
g.drawImage(imagen, 0, 0, null);
}
};
panel.setPreferredSize(new Dimension(300,300));
ventana.add(panel);
ventana.pack();
ventana.setVisible(true);
}

}
PD: Acabo de descubrir algo de lo mas inquietante: Si creo un ImageIcon con la imagen antes o despues de usar Toolkit, tambien se soluciona. ¿Alguna idea de porque sucede esto?

Cuando lo probeis tened en cuenta que le teneis que poner una imagen para ver el resultado y llamarla IMAGEN.png.

A todo esto, ¿Cual es la diferencia entre obtener una imagen usando ImageIcon, Toolkit e ImageIO?new ImageIcon("IMAGEN.png");
Toolkit.getDefaultToolkit().getImage("IMAGEN.png");
ImageIO.read(new File("IMAGEN.png"));
#26
Java / Como usar setLocationRelativeTo
4 Abril 2016, 09:10 AM
Para que sirve el metoo setLocationRelativeTo?
Por mas que busco en internet solo encuentro ejemplos en los que se le pasa por parametro 'null', que lo que hace es centrar la ventana:
setLocationRelativeTo(null);
Pero no encuentro ningun ejemplo que utilize un valor distinto de null. Se supone que lo que hace es colocar la ventana relativo al objeto que se le pasa, pero lo he probado y nada, que sigo sin ver como funciona.
¿Alguien puede ayudarme?
Gracias de antemano.
#27
Teniendo en cuenta que C es un lenguaje que depende en gran parte de la maquina, ¿Se puede programar en C para la maquina virtual de java? La ventaja de java esque es portable, pero lento por ser de alto nivel. Sin embargo C es mas rapido por ser de mas bajo nivel, pero no portable, asi que se me ocurrió que sería buena idea programar directamente en C para la maquina virtual de java, de modo que los programas contarian con las ventajas de los 2 lenguajes.

Lo mismo digo para ensamblador.
#28
Java / this y super: ligadura dinamica
17 Febrero 2016, 11:11 AM
Tengo las siguientes 3 clases:public class ClaseA {
public String metodo1(){
return "A";
}
public String metodo2(){
return this.metodo1();
}

}
public class ClaseB extends ClaseA {
public String metodo1(){
return "B";
}
public String metodo2(){
return this.metodo1() +""
+super.metodo1();
}

}
public class ClaseC extends ClaseB {
public String metodo1(){
return "C";
}

}
Y aparte también tengo una clase de prueba:public class PruebaClase{
public static void main(String[] args) {
ClaseA objetoA1 = new ClaseC();
System.out.println(objetoA1.metodo2());
ClaseA objetoA2 = new ClaseB();
System.out.println(objetoA2.metodo2());
}

}
Esta clase de prueba produce la siguiente salida:CA
BA
Pero, ¿Porqué?
En un principio, al ejecutarse el metodo2 de la claseC, utiliza el de la claseB porque lo hereda. Desde el metodo2 de la claseB se utilizan el metodo1 de la misma instancia (al ser una instancia de C se refiere al metodo que retorna una "C") y al metodo1 de la clase superior. Y aqui es donde entra la pregunta: ¿Porqué en este caso el metodo1 de la clase superior se refiere al de la claseA y no al superior de la instancia, que al ser una instancia de la claseC deberia referirse a la claseB?
#29
Bases de Datos / Para que sirven las foreign key
6 Febrero 2016, 19:41 PM
Cuando hago una consulta en mysql que conlleva el uso de varias tablas utilizoSELECT NombrePeliculas, NombreGeneros
FROM Peliculas, Generos
WHERE Peliculas.idGeneros = Generos.idGeneros;

Aunque tambien podria utilizar los JOIN
SELECT NombrePeliculas JOIN NombreGeneros
ON Peliculas.idGeneros = Generos.idGeneros;

Pero en cualquiera de los dos casos el uso de las foreign key es completamente innecesario, ya que tanto si indico que es una clave ajena como si no, funciona igualmente.
Entonces, ¿Cual es la verdadera escencia de las foreign key?

Sospecho que habrá alguna forma de unir tablas con las foreign key que todavia no he visto, pero por mas que busco en internet no encuentro nada  :(
#30
Java / Retos de java
19 Enero 2016, 20:54 PM
No se si este es el lugar correcto para proponer retos de java, si no es asi le pido a los moderadores que muevan este hilo al sitio correcto.

Reto 1: Adios punto y coma.
¿Serías capaz de programar en java sin utilizar este simpatico caracter para separar sentencias?
EDITO(22/01/2016) Por ejemplo, hacer un algoritmo de ordenamiento sin usar los que ya proporciona java
Nota: es posible.

Reto 2: Perdido entre las dimensiones
¿A que no eres capaz de crear una función que declare un array de N dimensiones? (Es decir, que devuelva un objeto de una clase generica en el que su atributo generico sea del tipo array de N dimensiones)
Si ademas eres capaz de inicializarlo me habrás superado

Reto 3: Recursividad sin recursos
Supongamos el caso de una funcion recursiva. Lo normal es que cuando se llame a si mismo lo haga pasando por parametro un valor diferente. Por ejemplo, el factorial de un numero es ese por el factorial del anterior. Pero ¿Seria posible hacer recursividad si la funcion no tiene parametros por el cual pasarle nuevos valores cuando se llama asi mismo? Claro que si. Solo habria que usar atributos de la clase en la que implementas la funcion, pero ¿Que tal si te digo que no puedes usar esos atributos? ¿Como harias una funcion recursiva entonces? (Reto añadido el 22/01/2016)

Reto 4: Bucles y mas bucles
Si quieres sumar todos los numeros de 1 a N, (Es decir, el sumatorio de los primeros N numeros) haces un bucle. Si quieres sumar todos los sumatorios de 1 a N (Sumatorio de sumatorio, llamemosle sumatorio de grado 2) haces un bucle dentro de un bucle. ¿A que no te atreves a sumar el sumatorio de grado G de los numeros de 1 a N? Existe una formula matematica, pero la idea es hacer N bucles dentro de bucles (Reto añadido el 22/01/2016)

EDITO(22/01/2016):Respecto del problema del punto y coma, me refiero a no utilizarlo en situaciones que normalmente harian falta. Por ejemplo suponte que tengo un array y quiero ordenarlo, pero tuviera que crear el metodo en lugar de usar uno como Arrays.sort ¿Que hariais entonces? ¿A que ya no parece tan sencillo?
De todos modos vosotros tambien podeis sugerir retos en este mismo hilo. Si lo veo edito este mensaje y lo añado por cortesia del que haya sugerido el reto.
#31
Java / Problema de arrays
19 Enero 2016, 14:28 PM
¿Existe algun metodo equivalente a ... ?Arrays.asList(1,2,3,4,5,6,7,8,9,0).toArray()
En otras palabras: ¿Conocen algun metodo que devuelva un array que contenga todos sus argumentos?
Algo como esto:public static <T[]> funcionQueDevuelveArray(T... t){
return t;
}

Seria muy practico, asi que tendria que haberlo digo yo.
#32
Java / Malditas clases internas
19 Enero 2016, 12:13 PM
Tengo el siguiente codigo:
class ClaseExterna{
class ClaseInternaNoEstatica{}
static class ClaseInternaEstatica{}
}

Para crear un objeto de la ClaseExterna hago lo siguiente:ClaseExterna obj = new ClaseExterna();
Despues si quiero crear un objeto de la ClaseInternaNoEstatica hago lo siguiente:ClaseExterna.ClaseInternaNoEstatica obj2 = obj.new ClaseInternaNoEstatica();
Consecuentemente tambien puedo crear un objeto de la ClaseInternaNoEstatica de la siguiente forma:ClaseExterna.ClaseInternaNoEstatica obj2 = new ClaseExterna().new ClaseInternaNoEstatica();
Ahora bien, si la clase interna es estatica, y al ser interna se considera un miembro del mismo al igual que sus atributos y métodos, entonces no debería de haber problema si creo un objeto de esa clase interna de la siguiente forma:ClaseExterna.ClaseInternaEstatica obj = ClaseExterna.new ClaseInterna();//Error de compilación
Sin embargo da error. ¿Por qué? ¿Por qué para crear un objeto debe ser, sin embargo, de la siguiente forma?ClaseExterna.ClaseInternaEstatica obj = new ClaseExterna.ClaseInternaEstatica();

Otra duda: cuando implemento una clase interna (tanto si es estatica como si no, da lo mismo) y trato de acceder a un atributo privado del mismo desde la clase externa no da error. ¿Por qué?

class ClaseExterna{
class ClaseInterna{private int atributoInterno = 7;}
int atributoExterno = new ClaseInterna().interna;//No da error de compilación
}

De echo, el error solo me lo da cuando trato de acceder a ese atributo privado desde fuera de la clase externa.
Entiendo que la clase interna pueda acceder a los miembros de la clase externa aunque sean privados, pero no entiendo por qué se puede hacer también lo contrario.
#33
Java / Pequeño problema con JTextArea
12 Enero 2016, 21:49 PM
Código (java) [Seleccionar]

import javax.swing.*;
import java.awt.*;

public class Test {

public static void main(String[] args) {
JFrame ventana = new JFrame();
ventana.setLayout(new FlowLayout(FlowLayout.LEFT));
ventana.add(new JTextArea(5,5));
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.pack();
ventana.setVisible(true);
}

}

Cuando me pongo a escribir frases largas en una misma linea cambia de tamaño el area de texto, pero quiero que se quede fijo (al menos, horizontalmente) y no se cómo hacerlo.
#34
Para insertar una imagen solo tengo que utilizar
[img]http://biomodel.uah.es/model3/ejemplo.gif[/img]
Y entonces sale la imagen:

¿Pero cómo puedo hacerlo cuando la imagen está en mi ordenador?
Y de paso, ¿Cómo puedo cambiar el tamaño de la imagen? Se ve bastante grande...
#35
Y que los asuntos que se crean también se puedan hacer de forma anónima.
¿Se puede hacer?
De lo contrario no seria mala idea poder hacerlo.
Total, ya que no podemos eliminar nuestros asuntos y respuestas publicados sin tener que pedírselo a los moderadores...
#36
Realmente no estoy interesado en contactar, pero la única manera que se me ocurre por el momento es enviar un email directamente (si es que sabes cuales son sus correos) o ponerte a buscar un mensaje que haya hecho algún moderador en el que además quede claro que es moderador para poder hacer click en el boton de "Mensaje personal" para contactar directamente si está conectado o "Email" para averiguar cuál es.

Si eres moderador y no quieres que se sepa tu correo, no te pido que lo pongas, sino simplemente poner en alguna parte un botón para mostrar los moderadores que hay.
#37
Una sugerencia y una peticion:

  • Sugerencia: Que se nos permita usar codigo html para poder personalizar mas los mensajes (aunque francamente, no se si es posible hacerlo).
  • Peticion: Que se nos brinde la posibilidad de elegir la codificacion de caracteres que vamos a usar cuando insertemos código para poder escribir vocales con tilde, entre otras cosas.
Así es como se ve la letra ' á ' en codigo Java:
Código (java) [Seleccionar]
á :'(

Edito (8/12/2015 2:06):
En lugar de la letra ' á ', en el código me sale &#225;
Esto solo ocurre en modo previsualización, tal y como dice engel lex.
#38
Código (java) [Seleccionar]
//La interfaz funcional

package test;

public interface Interface {

int factorial(int x);

}

Código (java) [Seleccionar]
//La clase que utiliza la expresion lambda

package test;

public class Test {

public static void main(String... args){
((Interface) x -> x == 1 ? 1 : x*factorial(x-1)).factorial(7); //No compila (busca la funcion en la clase Test).
((Interface) x -> x == 1 ? 1 : x*this.factorial(x-1)).factorial(7); //No compila (el puntero this apunta a un objeto de la clase Test).
}

}
#39
He creado varios post planteando dudas, pero ahora quiero eliminarlas y no se como. Hay un boton X que puede servir para eliminar el post o el comentario dentro del post, pero no hace nada. ¿Alguna sugerencia?
#40
Java / Problema dificil de arrays
20 Noviembre 2015, 14:43 PM
El problema que me he propuesto a mi mismo consiste en crear un array de n dimensiones en tiempo de ejecucion.
(cuidado, no confundir con array de longitud n. Si las dimensiones son 2 es una matriz, de 3 una matriz tridimensional, etc.)
Al principio parece imposible, pero se me ocurrió que si utilizo clases genéricas puedo hacer un array de una dimension más tal y como muestra el ssiguiente código:
Código (java) [Seleccionar]
package test;

public class ClaseGenerica<T> {

ClaseGenerica<T[]> t;
T u;

Test2<?> u = new Test2<Integer>();
for(int i = 0; i < 10; i++){
u.t = new Test2<>();
u = u.t;
}
public static void main(String... args){

ClaseGenerica<Integer> t = new Test2<>();
t.t = new ClaseGenerica<>();
t.t.t = new ClaseGenerica<>();
t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t.t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t.t.t.t.t.t = new ClaseGenerica<>();
t.t.t.t.t.t.t.t.t.t.t = new ClaseGenerica<>();
//En total el array tiene 10 dimensiones, no se molesten en contarlos
t.t.t.t.t.t.t.t.t.t.t.u = new Integer[0][][][][][][][][][]; //No da error de compilación
//Como pueden ver, no he necesitado declarar un array de N dimensiones, solo instanciarlo

}

}


Es un poco evidente que esto se puede hacer tambien con un bucle for y el operador '?' tal y como muestro a continuación, pero el problema viene después al querer instanciar ese array, que es lo que me gustaria a mi saber.

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

public class ClaseGenerica<T> {

ClaseGenerica<T[]> t;
T u;

public static void main(String... args){

ClaseGenerica<?> t = new ClaseGenerica<Integer>();
for(int i = 0; i < 10; i++){
t.t = new ClaseGenerica<>();
t = t.t;
}
t.u = new Integer[0][][][][][][][][][]; //Obviamente, error de compilación
}

}

¿Alguna idea de como solventar este problema? No es que tenga mucha utilidad práctica, pero es por curiosidad
#41
Java / Casting de arrays
20 Noviembre 2015, 00:09 AM
Código (java) [Seleccionar]
byte b = (byte)7 //no problem
byte[] array = (byte[]) new int[7] //error de compilacion

Creo que el problema habla por si solo, pero por si no ha quedado claro la pregunta es:
¿Como puedo hacer un casting de arrays?

Edito: He puesto como ejemplo tipos primitivos pero busco una forma que tambien funcione con clases
#42
Java / problema con variables creadas en funciones
18 Noviembre 2015, 23:34 PM
Si yo creo una funcion recursiva con, por poner un ejemplo, una variable "var" de tipo int que incremente su valor una unidad cada vez que se accede a la misma funcion dentro de si misma, como podria acceder a su valor?
Código (java) [Seleccionar]
boolean darPrimerValor = true;//Esto solo es para darle a "var" el valor 0 una sola vez

void funcion(){
   if(darPrimerValor == true){
      int var = 0;
      darPrimerValor = false;
   }
   if(var < 10){
      var++;
      funcion();
   };
}

Cada vez que se ejecuta la funcion dentro de si misma crearia una nueva variable "var" con el mismo nombre, no? entonces como puedo obtener el valor de la variable de la funcion que la llama?
Es lo mismo que si uno de los parametros de la funcion tuviera el mismo nombre que un atributo de la clase en la que se instancia, solo que para eso se usa el puntero "this" y para el problema que propongo no.
#43
Se que para dirigir la salida de un comando hacia un archivo se utiliza el simbolo ">"
Por ejemplo:
Código (dos) [Seleccionar]
echo qweruiop > "archivo de texto".txt
Pero si el archivo contenia algo anteriormente, lo elimina, de modo que si no se quiere eliminar lo que contenia anteriormente se utiliza ">>" y asi a~nade la salida del comando al final del archivo
Código (dos) [Seleccionar]
echo esta es la segunda linea >> "archivo de texto".txt
Si en lugar de dirigir la salida hacia un archivo queremos hacer lo contrario, entonces utilizamos "<" o "<<", pero Como? Por ejemplo si quiero imprimir en pantalla el contenido de un archivo sin usar el comando type esto deberia funcionar pero no lo hace.
Código (dos) [Seleccionar]
echo < "archivo de texto".txt
De todos modos lo que realmente me gustaria saber es como podria, como dice el titulo de la pregunta, introducir la parte que yo eliga de un documento de texto en una variable de entorno para guardar datos y poder utilizarlos de nuevo la proxima vez sin tener que introducirlos nuevamente, y como dirigir la salida de un comando hacia un lugar concreto de un archivo sin que sea necesariamente al final, es decir entre dos renglones determinados o incluso detras de un determinado caracter de uno de los renglones.

Otra cosita mas, aunque esto no es tan importante: Me he fijado que aunque escribes help para obtener todos los comandos, en realidad no estan todos (como el comando choice). Como puedo saber cuales son todos los comandos que hay realmente sin tener que mirarlo en internet? Donde estan guardados realmente?