Mostrar Mensajes

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


Mensajes - Alex Rodríguez

Páginas: 1 ... 78 79 80 81 82 [83] 84 85 86 87 88 ... 93
1641
Hola, he probado el código sobre un servidor y no presenta problemas. Realiza la validación y salen los colores del CSS. Esto nos puede llevar a la conclusión de que el problema no lo tienes en el código, sino en la máquina (ordenador o servidor) sobre la que ejecutas el código.

Para ejecutar código php en windows necesitas tener instalado un emulador de servidor como wamp o xampp y tenerlo bien configurado. Puede ocurrir que:

a) No lo tengas instalado

b) Lo tengas instalado pero no hayas iniciado los servicios del emulador

c) Lo tengas instalado y hayas iniciado los servicios pero no lo hayas configurado correctamente.


1642
Aprender a programar desde cero / Re:Problemas con la orden PRINT en VB
« en: 24 de Septiembre 2013, 08:11 »
Nosotros siempre insistimos en que lo importante son los conceptos, y que no hay que prestar tanta atención a las versiones porque estas cambian continuamente. Por tanto si logras avanzar y comprender los conceptos con VB 2008 no tendrías por qué cambiar, aunque como te decía ambas opciones son válidas. Saludos.

1643
Aprender a programar desde cero / Re:Problemas con la orden PRINT en VB
« en: 23 de Septiembre 2013, 15:35 »
Hola raik, la orden print efectivamente puede dar problemas en versiones como la 2008 ó la 2010 etc. De cualquier forma esto no es un problema para seguir el curso, lo único que debes usar son labels en lugar de usar la orden print. El concepto es el mismo y el aprendizaje va a ser el mismo.

De todas formas si quieres usar VB6 en Windows 7 también puedes hacerlo, siguiendo las indicaciones que se dan aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=286.0 (usar el enlace descarga de google)

¿Qué opción es mejor? Creo que las dos son válidas, con ambas podrás seguir el curso. Si tienes algún problema háznoslo saber para intentar solucionarlo. Saludos.


1644
Pues parece un problema más complicado de lo que pueda parecer a primera vista. Se trata de una optimización, ya que tienes que encontrar la mejor solución o solución óptima (se supone que será aquella para la que se obtienen los cortes usando el menor número de barras posible), pero además te piden todas las posibles combinaciones de corte, lo cual obliga a generar todas las posibles combinaciones aunque se sepa que no van a ser óptimas.

Lo primero que habría que aclarar es el enunciado del problema: cuando se dice "s" cantidad de barras de "x" longitud podríamos pensar que s es un número variable y x un número fijo. Por ejemplo podríamos pensar que fueran 5 barras de 2 metros de longitud.

O podríamos pensar que s es un número variable y x un número variable también, por ejemplo 5 barras con longitudes 3, 2, 4, 3, y 1 metro.

Con los cortes sucede lo mismo: podríamos pensar que todos los cortes son iguales. Por ejemplo 3 cortes de 1 metro, o bien que cada corte tiene su propia longitud.

Lo que veo es que has supuesto que las barras son de longitud variable y los cortes son de longitud variable.

Supongamos que tenemos 2 barras una de 3 metros y otra de 4 metros y que hay que generar 2 cortes uno de 1 metro y otro de 2 metros. Tendríamos que generar un árbol de soluciones donde una primera ramificación es el número de barras que intervienen en la solución. Para cada una de estas ramificaciones tendríamos que buscar las diferentes asignaciones de corte a cada barra posibles y calcular su puntuación.

Por ejemplo teniendo dos barras tendríamos dos ramificaciones: hacia un lado, una solución donde solo interviene una barra, y hacia otro lado una solución donde intervienen dos barras.

En la solución donde solo interviene una barra tendríamos tantas ramificaciones como barras, en nuestro caso 2, lo que nos llevaría a asignar todos los cortes a la primera barra y esto nos da la SOLUCIÓN 1: barra 1 con 2 cortes, residuo 0; Por otro lado si asignamos todos los cortes a la segunda barra tenemos la SOLUCIÓN 2: barra 2 con 2 cortes, residuo 1.

En la solución donde intervienen dos barras tendríamos tantas ramificaciones como posibles combinaciones de barras dos a dos. Si tuviéramos 4 barras las ramificaciones serían 1-2, 1-3, 1-4, 2-3, 2-4, 3-4. Seguidamente tendríamos tantas ramificaciones como posibles combinaciones de asignaciones de cortes a las barras.

En el ejemplo anterior sólo tenemos dos barras por lo que la única ramificación sería 1-2, y las posibles combinaciones serían:

a) Asignar el primer corte a la primera barra (residuo: 2) y el segundo a la segunda barra (residuo: 2) con residuo total 4, SOLUCIÓN 3

b) Asignar el primer corte a la segunda barra (residuo: 3) y el segundo a la primera barra (residuo: 1) con residuo total 4, SOLUCIÓN 4

En nuestro caso no tenemos más combinaciones posibles, la calificación de las combinaciones la haríamos en base al residuo que dejan, con lo cual la calificación sería:

SOLUCIÓN 1: 0
SOLUCIÓN 2: 1
SOLUCIÓN 3: 4
SOLUCIÓN 4: 4

Y la solución óptima sería la solución 1 porque es la que genera el menor residuo.

En algunos casos no habría una sola solución óptima, sino varias soluciones óptimas (que empatarían con la mejor puntuación). Al aumentar el número de barras y de cortes la cantidad de combinaciones crecería desmesuradamente.


Quizás haya una solución más sencilla, pero a simple vista parece un problema de algoritmia avanzada a resolver con la técnica de "Backtracking" y el primer paso a dar sería generar todas las posibles combinaciones (todas las posibles cantidades de barras, y todas las posibles combinaciones de cortes para cada cantidad). Esto se suele hacer mediante algoritmos recursivos, pero no sé si has trabajado con algoritmia recursiva. Esta es bastante complicada de entender y plantear si no se ha trabajado con ella.

En resumen, lo veo complejo si el enunciado es tal como se ha supuesto. Normalmente en los enunciados se introducen simplificaciones que facilitan la resolución del problema, pero habría que ver si el enunciado es simplificable respecto a lo supuesto. También es posible que haya una forma más sencilla de resolverlo, pero a mí no se me ocurre. Saludos.

1645
Ya me gustaría ser un genio... Mira, al quitar la p lo que estás haciendo es crear otro tipo de conexión con la base de datos. El pconnet crea una conexión persistente y al no cerrarse el servidor te bloqueaba una vez abiertas determinado número de conexiones. Sobre el límite para ser lo que llamas pro, que yo no lo soy y ya supero los cuarenta, depende de la persona, su capacidad innata para la programación, el esfuerzo y estudio que aplique para el aprendizaje y además, de forma importante, en que ese esfuerzo y estudio esté bien organizado y estructurado.

Me explico: una persona puede dedicar 5 horas al día a estudiar y practicar delante del ordenador y si lo hace sin seguir un orden y organización adecuados, al cabo de un año no haber aprendido prácticamente nada. En cambio, si esa misma persona sigue un orden y pautas adecuadas, al cabo de un año puede estar a nivel profesional en alguna tecnología.

¿A qué me refiero con buena organización, estructuración, orden, etc.?

Me refiero a que para adquirir conocimientos de programación existen miles de fuentes de información: libros, páginas web, revistas, etc. Es importante elegir buenas fuentes: buenos libros, buenas páginas web, etc.

También me refiero a que a la hora de estudiar y practicar hay que marcarse un orden y unos objetivos. Por ejemplo, si quieres convertirte en programador web un buen itinerario empezaría con un curso de Fundamentos de Programación o quizás con HTML. Si comienzas tu formación con un curso de Dreamweaver ó un curso de CSS posiblemente pierdas el tiempo. No tiene sentido estudiar CSS sin antes tener fundamentos de HTML... al menos esa es mi opinión.

Tampoco a todo el mundo se le da la programación. Es como dibujar, hay gente que tiene facilidad y gente a la que le cuesta mucho. Si me cuesta mucho lo lógico es que no sea pintor, sino que me dedique a algo que me suponga menos esfuerzo.

Si tienes una capacidad innata y te formas siguiendo una organización y orden adecuados, lograrás comprensión sobre la lógica que hay debajo de los sistemas informáticos y esto te permitirá resolver mayor cantidad de problemas. Nadie lo sabe todo, pero hay algunas personas que con conocimiento y práctica son capaces de resolver cosas que la mayoría de la gente no sabría resolver. Y te lo digo después de haber trabajado junto a un buen número de programadores, cada uno de ellos distinto.


1646
Sí, puede considerarse como una errata o incorrección.

El cambio sería el siguiente:

Donde dice "En el caso de necesitar números aleatorios enteros en un rango determinado, podemos trasladarnos a un intervalo..."

Debe decir "En el caso de necesitar números aleatorios enteros positivos en un rango determinado, podemos trasladarnos a un intervalo..."

Creo que con este cambio quedaría corregido.

1647
Buena onda...


No estoy seguro, pero pienso que el problema pueda venir porque con mysql_pconnect creas una conexión persistente con la base de datos y el número de conexiones persistentes puede estar limitado del lado del servidor, y si es un servidor gratuito con más razón todavía.

En lugar de usar mysql_pconnetct prueba a usar mysql_connect, es decir:

Actualmente tienes: $conexionlicale = mysql_pconnect($hostname_conexionlicale, $username_conexionlicale, $password_conexionlicale) or trigger_error(mysql_error(),E_USER_ERROR);


Cámbialo por: $conexionlicale = mysql_connect($hostname_conexionlicale, $username_conexionlicale, $password_conexionlicale) or trigger_error(mysql_error(),E_USER_ERROR);

Parece una tontería pero probar no te cuesta nada, a ver qué tal.

1648
Hola ledesma, ¿el código que has puesto es todo el código que hay en el archivo conexionlicale.php?

¿puedes poner el código que tienes en el archivo index.php para echarle un vistazo? (Si es largo ponlo usando el botón # del editor del foro, o bien como archivo adjunto)

1649
Puedes hacerlo usando extensiones específicas que te permiten organizar videos y tener distintas posibilidades extra, aunque si simplemente quieres insertar un video dentro de un artículo puede ser más sencillo introducir directamente el código necesario dentro del artículo sin instalar una extensión. Al fin y al cabo instalar extensiones va cargando el sistema y no debería hacerse excepto cuando sea realmente necesario. Saludos.

1650
He estado revisando lo que indicabas y surgen varias cuestiones.

En primer lugar ¿a qué llamamos cantidad_números_rango? Yo llamaría cantidad_números_rango al valor número superior del rango - número inferior del rango + 1 . Por ejemplo, si se quieren generar enteros entre 1 y 10 cantidad_números_rango sería 10-1+1 = 10. Si se quieren generar enteros entre 2 y 6 tendríamos 6-2+1 = 5

Hay algunas cosas curiosas. Por ejemplo el uso de int(numeroDecimal) devuelve siempre el redondeo a la parte entera de un número. En el caso de números positivos nos devuelve el entero inferior pero en caso de ser números negativos nos devuelve el entero superior

Así int(6.88) devuelve 6 que es el entero inferior pero int(-6.88) devuelve -6 que es el entero superior. En realidad no deberíamos hablar de redondeo, sino simplemente de "parte entera de un número".

Si queremos generar enteros entre 1  y -6 tenemos un problema con una expresión de este tipo:

(int)(rnd2.nextDouble() * 8 + (-6));

¿Cuál es el problema? Que si pretendemos obtener una distribución más o menos uniforme de los números -6, -5, -4, -3, -2, -1, 0, 1 esta fórmula no nos va a ir bien.

Esta fórmula nos devuelve aleatorios entre -6 y 5 con un 12,5 % de probabilidad, entre -5 y -4 con un 12,5 % de probabilidad, entre -4 y -3 con  otro 12,5 %, entre -3 y -2 con otro 12,5 %, entre -2 y -1 con otro 12,5%, entre -1 y 0 con otro 12,5 %, entre 0 y 1 con otro 12,5% y entre 1 y 2 (excluido) con otro 12,5%.

Problema primero: para obtener un -6 necesitaríamos un aleatorio exactamente cero. Si generamos decimales con 16 posiciones decimales significa que la probabilidad de obtener un cero es casi nula, con lo cual obtener un -6 será casi imposible.

Problema segundo: como entre -1 y 0 se toma la parte entera que es cero y entre 0 y 1 se toma la parte entera que es cero, la probabilidad de obtener un cero no es del 12,5 %, sino el doble, el 25%.

En resumen, con esta fórmula hay problemas para intervalos donde intervienen números negativos.

En cambio diría en principio que funciona a la perfección (con distribución uniforme) cuando se trata de un intervalo entre números positivos.

No sé si esto te aclara algo, o al contrario. Yo diría que ni la fórmula planteada en el curso ni la que planteas tú es adecuada en el caso de intervalos con números negativos, en ese caso habría que buscar otras alternativas. Revísalo a ver si estás de acuerdo. Saludos.

Aquí un pequeño programa de pruebas:

Código: [Seleccionar]
/*Numeros aleatorios www.aprenderaprogramar.com*/
import java.util.Random;

public class test {
    public static void main(String[] Args) {
        int num1 =0 ;
        int num2 = 0;
        System.out.println ("Test con aleatorios enteros entre 1 y 6, cantidad_numeros_rango = 6-1+1 = 6");
        Random rnd1 = new Random();
        for (int i =0; i<30; i++) {
            num1 = (int)(rnd1.nextDouble() * 6 + 1);
            System.out.println ("Aleatorio generado: " + num1);
        }
        System.out.println ("Test con aleatorios enteros entre 1 y -6, cantidad_numeros_rango = 1-(-6)+1 = 8");
        Random rnd2 = new Random();
        for (int i =0; i<30; i++) {
            num2 = (int)(rnd2.nextDouble() * 8 + (-6));
            System.out.println ("Aleatorio generado: " + num2);
        }
    }
}

1651
Hola calajucha, es posible que se trate de una errata, en alguna ocasión se escapan; aunque si has seguido cursos y otros materiales de la web creo que se puede decir que se escapan pocas y gracias a avisos como este las vamos corrigiendo. Voy a revisarlo y cuando lo haya visto te respondo. Saludos.

1652
Comunidad / Re:sobre el crackeo de redes wifi
« en: 29 de Agosto 2013, 09:32 »
Por ahí se empieza...

1653
Comunidad / Re:sobre el crackeo de redes wifi
« en: 27 de Agosto 2013, 00:06 »
Ya que estamos cuenta cómo te ha ido ¿ya eres un cracker profesional?

1654
Ahora no puedo mirar el video, lo haré más tarde. Para abrir el proyecto uso WAMP, copio el sistema de archivos en la carpeta www, luego accedo a phpMyAdmin, creo una base de datos denominada licale, importo el archivo sql a esa base de datos, luego accedo a través del navegador escribiendo http://localhost/licale
Hay que tener el wampserver activado para poder acceder a localhost.
Aquí no tengo un mac a mano para poder hacer pruebas con mac, pero supongo que será similar.

1655
He importado la base de datos y lo veo todo perfectamente. Se ve que hay partes de la web que faltan por terminar, pero lo que hay está todo aparentemente bien.

1656
No, el grande eres tú  :); he abierto el proyecto usando wamp, pero creo que no me has pasado la base de datos. La web se genera a partir de los archivos y a partir de la base de datos con la que estés trabajando. Tendrías que entrar a phpMyAdmin y exportar la base de datos a un fichero .sql y pasarlo.

Sin base de datos he podido ver algunos apartados... en principio lo que he visto se ve bien. Lo he mirado con Firefox 22 y con Internet Explorer 8, con ambos se ve aparentemente bien.

1657
¿Qué tal ledesma? Veo que seguimos en la brecha  ;). He visto por encima lo que indicas, también he descargado el proyecto aunque todavía no he tenido tiempo de mirarlo.

Lo primero que te preguntaría es: ¿cuándo empezó a surgir ese error? ¿Con qué archivo o qué estabas haciendo cuando se te empezó a dar?

El problema puede venir por varios motivos. Por decir algo, da la impresión de que en la aplicación web en algún momento abres la conexión mysql (normalmente con mysql_connect) y la dejas abierta... vas usando esa conexión pero en un momento dado te falla. Podría deberse a que:

- Hayas cerrado la conexión mysql y luego trates de hacer una consulta, por lo que te salta el error

- La conexión abierta hace un tiempo se ha cerrado automáticamente y te falla la ejecución de un script. Al recargar la página, cuando repites la consulta se hace una reconexión automática y de ahí que una vez recargues se vea ya ok. Habría que revisar para re-abrir la conexión mysql antes de ejecutar el script, de ese modo no fallaría por una desconexión automática.

Saludos.


1658
Creo que vas avanzando... Decías por ahí "si tienes o sabes de alguna pagina de ejercicios dedicados al "Map" para reforzar mis conocimientos..." yo como colaboro directamente con aprenderaprogramar.com obviamente recomiendo nuestros propios contenidos, no voy a recomendar los de otros  :):

Conceptos más básicos pero bien estructurados en un curso básico: https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Conceptos más avanzados (incluidos maps y otros): https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180

Saludos

1659
He intentado hacer una prueba para comprobar que la clase ClimaUtiles funcione usando este código:

Código: [Seleccionar]
import java.util.Map;
import java.util.List;
import java.io.File;


public class TestGroenlandia extends Test {
private static final String SEP = File.separator;
//private static final String ARCHIVO_DATOS = "." + SEP + "res" + SEP + "registrosTemperaturas.txt";
      private static final String ARCHIVO_DATOS = "registrosTemperaturas.txt";


public static void main(String[] args) {
ClimaGroenlandiaImpl ecg = new ClimaGroenlandiaImpl();
ecg.cargaFichero(ARCHIVO_DATOS);
mostrar("Temperatura mínima: " + ecg.temperaturaMinima());

ClimaUtiles prueba = new ClimaUtiles();
Map <String , List<Integer>> pruebaMapa = ecg.getMap();
System.out.println ("La diferencia máxima en Kujalleq es: "+ prueba.diferenciaMaxima("Kujalleq", pruebaMapa));

}
}

Taqmbién hace falta en la clase ClimaGroenlandiaImpl añadir este método:
Código: [Seleccionar]
public Map <String , List<Integer>> getMap() {return mapa;}

Todo compila pero me salta un error que no me deja continuar enla clase ClimaUtiles, en la línea:

Ordering<Integer> OrdenUsingMinMax = Ordering.natural();

indica "Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ReverseOrdering
"

Ahora mismo no sé si es un error en guava, un error tuyo al plantear el código o que se me está escapando algo, haz tú la prueba a ver si te salta el mismo error. Ese método se necesita para completar los otros apartados y es lógico probar primero que funcione. Saludos.

1660
¿Qué tal? Ya me extrañaba que no hubieras respondido. Efectivamente hay varias maneras de recorrer una colección en Java. Mi opinión es la siguiente: usar el for extendido cuando se trate de hacer un recorrido en el que no se va a manipular la colección, por ejemplo si simplemente quieres mostrar el contenido por pantalla puedes usar un for extendido. Usar el while con iterator cuando se quiera hacer un recorrido en el que al mismo tiempo se vaya a operar sobre la colección, por ejemplo cambiar un valor por otro si se detecta determinada circunstancia.
Hay cosas en tu código como:

for( String el:elemLinea ){
               listaStr.add(el);
         }//segundo for

que yo no haría así, lo cual no quiere decir que no se pueda hacer así. Fíjate que estás extrayendo el en cada pasada y estás añadiendo el a una colección. En cierto modo estás operando con el, aunque en este caso no va a tener efectos colaterales en otros sí los puede tener, por eso prefiero el iterator.

El iterator hace una copia de la colección para efectuar el recorrido. El recorrido se basa en la copia, por eso puedes manipular la colección sin alterar el transcurrir del recorrido.

El uso del for con iterator si te digo la verdad no lo uso, es una construcción un tanto extraña aunque para gustos colores.

Páginas: 1 ... 78 79 80 81 82 [83] 84 85 86 87 88 ... 93

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".