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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: 1 2 3 [4] 5 6 7
31  Programación / PHP / Problema con funciones y while. en: 12 Marzo 2016, 00:16 am
Me estoy comiendo la cabeza con una estupidez que quería hacer.

Código
  1. <?php
  2.  
  3. /* Jose’ coin flipping
  4.  
  5.  If you get “Head”, that means you have to come,
  6.  but if it’s “tail” you haven’t.
  7.  
  8.  Best of lucks!
  9.  
  10.  Development by Aitor
  11.  */
  12.  
  13. function heads_tails($random){
  14.  
  15. $heads_tails = array(
  16. 1 => true, // head
  17. 2 => false); // tail
  18.  
  19. return $heads_tails[$random];
  20. }
  21.  
  22. $random = rand(1,2);
  23.  
  24. $heads_tails = heads_tails($random);
  25.  
  26. $kill_a_dog = 0;
  27.  
  28. while($heads_tails == false){
  29. $kill_a_dog++;
  30. $heads_tails = heads_tails($random);
  31. }
  32.  
  33. echo "Número de perros muertos: ".$kill_a_dog;
  34.  
  35. ?>

La idea es, a partir de un número aleatorio, 1 ó 2, genera un true o false, lo que sería cara, en caso de true, y cruz en caso de false.

En el caso de que saliese false, entrar en un while del que no salgas hasta que la función retorne un true, el problema está en que, al probar el código, genera el siguiente error.

Citar
Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\PHP\JoseComeHere\test2.php on line 30

¿Dónde está el fallo?

Edito:

Soy la cosa más idiota del mundo. Rand siempre tendría el mismo valor y por ello nunca saldría del bucle. Solucionado con meter un rand en el while tal que así:

Código
  1. while($heads_tails == false){
  2. $random = rand(1,2);
  3. $kill_a_dog++;
  4. $heads_tails = heads_tails($random);
  5.  
  6. }
  7.  

Lamento el post tan ridículo. Saludos.
32  Informática / Hardware / Problema con el teclado. en: 5 Marzo 2016, 16:29 pm
Mi problema es el siguiente, mi teclado (de un portatil), al escribir letras cómo C, F, N, X, A (Sólo esas que yo sepa) tienden en algún momento a repetirse. Como resultado, una palabra como "teclado", al escribir escribe algo cómo "tecclaado/teccclado"/teccclaaado", en ocasiones son 3 caracteres repetidos, 2 o a veces ninguno.

He probado a pasar el antivirus, pero sigue sin resultado alguno.

También probé configuraciones del teclado, cambiando la velocidad de repetición, y sigue sin resultado alguno.

Terminé probando un teclado externo, este escribe fenomenal, llegué a pensar que quizá alguien de mi familia cayó algún líquido (tuve problemas iguales en 2 ocasiones...) pero al parecer nadie cayó ningún líquido, lo que sí, mi gata tendía a subirse encima del teclado. Y pensándolo bien creo (no estoy seguro) empezó a pasar desde la última vez que la vi encima. (Creo, no sé si es autosugestión, así que no lo puedo garantizar).

Como curiosidad, el teclado funciona perfectamente siempre que el externo esté conectado, ahora mismo estoy escribiendo desde el teclado del portatil, mientras tengo enchufado un externo. Al quitarlo, es cuestión de tiempo que vuelva a repetirse los caracteres, e incluso teclas como Control+A (Seleccionar todo), o Shift + n no funcionan.

Así qué, tras pensar que quizá, era el hardware del teclado, me encuentro con que muy posiblemente sean los drivers... ¿Sino, por qué con el teclado externo enchufado, el del portatil funciona perfectamente? El problema es que los drivers están actualizados, y no me permite volver a actualizarlos.

¿Qué pensáis vosotros? ¿Alguna solución? No quisiera pasarme toda mi vida con un teclado externo enchufado al portatil xD

Gracias de antemano.
33  Programación / .NET (C#, VB.NET, ASP) / Cuenta regresiva a partir de una fecha (VB.Net) en: 23 Septiembre 2015, 16:26 pm
Código
  1.    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  2.        '  Dim Año As Integer = Microsoft.VisualBasic.DateAndTime.Year(Now) '2015
  3.  
  4.        Dim Mes As Integer = Microsoft.VisualBasic.DateAndTime.Month(Now) ' Mes 9
  5.        Dim Dia As Integer = Microsoft.VisualBasic.DateAndTime.Day(Now)
  6.        Dim Hora As Integer = Microsoft.VisualBasic.DateAndTime.Hour(Now)
  7.        Dim Minuto As Integer = Microsoft.VisualBasic.DateAndTime.Minute(Now)
  8.        Dim Segundo As Integer = Microsoft.VisualBasic.DateAndTime.Second(Now)
  9.  
  10.  
  11.        Dim MesAni As Integer = 10
  12.        Dim DiaAni As Integer = 5
  13.        Dim HoraAni As Integer = 23
  14.        Dim MinutoAni As Integer = 59
  15.        Dim SegundoAni As Integer = 59
  16.  
  17.        Dim Mesrestante As Integer = MesAni - Mes
  18.        Dim Diarestante As Integer = DiaAni - Dia
  19.        Dim Horarestante As Integer = HoraAni - Hora
  20.        Dim Minutorestante As Integer = MinutoAni - Minuto
  21.        Dim Segundorestante As Integer = SegundoAni - Segundo
  22.  
  23.        Label1.Text = "Dias: " & Diarestante & " Horas: " & Horarestante & " Minutos " & Minutorestante & " Segundos: " & Segundorestante
  24.        Label1.Show()
  25.  
  26.    End Sub


La idea es hacer una cuenta regresiva que este en una continua actualización, a partir de una fecha clave, y la fecha base del ordenador.

El problema aquí está en que el mes no es el mismo, y por lo tanto la variable Diarestante da un valor negativo. ¿Cómo solucionar eso? O en su defecto alguna forma mejor de hacerlo.

La idea principal es que no se muestre lo que contiene el programa hasta ese día, supongo que para saber si se ha pasado el día basta con comprobar que el díaActual sea mayor que el diaAni.


Edito:

Para arreglarlo de una forma cutre:

Código
  1.        Dim Mes As Integer = Microsoft.VisualBasic.DateAndTime.Month(Now) ' Mes 9
  2.        Dim Dia As Integer = Microsoft.VisualBasic.DateAndTime.Day(Now)
  3.        Dim Hora As Integer = Microsoft.VisualBasic.DateAndTime.Hour(Now)
  4.        Dim Minuto As Integer = Microsoft.VisualBasic.DateAndTime.Minute(Now)
  5.        Dim Segundo As Integer = Microsoft.VisualBasic.DateAndTime.Second(Now)
  6.  
  7.  
  8.        Dim MesAni As Integer = 10
  9.        Dim DiaAni As Integer = 278
  10.        Dim HoraAni As Integer = 23
  11.        Dim MinutoAni As Integer = 59
  12.        Dim SegundoAni As Integer = 59
  13.  
  14.        Select Case Dia
  15.            Case 23
  16.                Dia = 266
  17.            Case 24
  18.                Dia = 267
  19.            Case 25
  20.                Dia = 268
  21.            Case 26
  22.                Dia = 269
  23.            Case 27
  24.                Dia = 270
  25.            Case 28
  26.                Dia = 271
  27.            Case 29
  28.                Dia = 272
  29.            Case 30
  30.                Dia = 273
  31.            Case 1
  32.                Dia = 274
  33.            Case 2
  34.                Dia = 275
  35.            Case 3
  36.                Dia = 276
  37.            Case 4
  38.                Dia = 277
  39.            Case 5
  40.                Dia = 278
  41.        End Select
  42.  
  43.        Dim Mesrestante As Integer = MesAni - Mes
  44.        Dim Diarestante As Integer = DiaAni - Dia
  45.        Dim Horarestante As Integer = HoraAni - Hora
  46.        Dim Minutorestante As Integer = MinutoAni - Minuto
  47.        Dim Segundorestante As Integer = SegundoAni - Segundo
  48.  
  49.  
  50.        Label1.Text = "Dias: " & Diarestante & " Horas: " & Horarestante & " Minutos " & Minutorestante & " Segundos: " & Segundorestante
  51.        Label1.Show()

De esta forma con los casos me aseguro de que tengan el dia correspondiente a su dia en base a los 365 dias posibles...

Pero claro, esto solo sirve como un apaño para solucionar mi problema suponiendo que la cuenta regresiva es de máximo 1 mes. Sigo sin saber como solucionar el problema en sí.
34  Programación / Programación C/C++ / Permutaciones en C++ en: 13 Febrero 2015, 11:55 am
La idea es sencilla pero llevo toda la mañana rompiéndome la cabeza. A partir de un string generar todas combinaciones posibles de n elementos.

Ejemplo:
Citar
A B C D

Siendo A string[0], y D string[3] resultados:

Citar
0 1 2 3
1 0 2 3
1 2 0 3
1 2 3 0
0 2 3 1
2 0 3 1
2 3 0 1
2 3 1 0
0 3 1 2
3 0 1 2
3 1 0 2
3 1 2 0
0 1 2 3
1 0 2 3
1 2 0 3
1 2 3 0
0 2 3 1
2 0 3 1
2 3 0 1
2 3 1 0
0 3 1 2
3 0 1 2
3 1 0 2
3 1 2 0

Principalmente intenté entender como funcionaba y como podría conseguir una pauta de sacar todas combinaciones, aquí ya hablare de todo el lío que se me pasó por la cabeza, al principio probé exclusivamente con 3 elementos, A, B, C la idea principal era sacar las 6 posibles combinaciones mediante una pauta a seguir, la idea era cambiar A dónde B, B dónde A generando una nueva palabra, después B dónde C, y C dónde B generando otra nueva palabra, y vuelta empezar hasta sacar las 6 combinaciones, el problema vino con elementos de cuatro, aquí empece a volverme loco al principió pensé que sería A dónde B, B dónde A. generando una nueva palabra, y después C dónde D y D dónde C generando otra nueva palabra y así sucesivamente, pero tras sacar 8 palabras nuevas, empezaban todas a repetirse, unas de las opciones que opté fue organizarlas por de menor a mayor

De la siguiente forma:

Citar
0 1 2 3
0 1 3 2
0 2 1 3
0 2 3 1
0 3 1 2
0 3 2 1

1 0 2 3
1 0 3 2
1 2 0 3
1 2 3 0
1 3 0 2
1 3 2 0

2 0 1 3
2 0 3 1
2 1 0 3
2 1 3 0
2 3 0 1
2 3 1 0

3 0 1 2
3 0 2 1
3 1 0 2
3 1 2 0
3 2 0 1
3 2 1 0

La idea ahora era que a la hora de programarlo, solo tuviese que tener en cuenta el código ASCII de los caracteres que componían la palabra e ir ordenándolos de menor a mayor, pero no vi como y me pareció una perdida de tiempo.

Finalmente me percaté (cielos, esto parece una novela xD) de qué la pauta que seguía independientemente de los elementos que cogiesen era A dónde B (Generando así nueva palabra) después B dónde C (Generando de nuevo otra nueva palabra) C dónde D (Generando, cómo no, una nueva palabra) y finalmente D dónde A y vuelta a empezar.

Si, efectivamente me encanta enrollarme pero quiero hacerme entender, llegados a este punto mi idea es la siguiente...

n! siendo n el tamaño del string, para después crear una tupla con el resultado de n! para recorrer un for n! veces y rellenar toda la tupla con las posibles combinaciones. El problema está en que no sé como narices puedo pasar String[0] por String[1] en la siguiente vuelta String[1] por String[2] y así sucesivamente hasta terminar con String[ejemplo.size-1] por String[ejemplo.size]

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7. string palabra = "ABC";
  8.  
  9. int tam = palabra.size();
  10. int i, n_fact = 1;
  11.  
  12.    for(i=1; i<=tam; i++){
  13.  
  14.        n_fact = n_fact * i;
  15.    }
  16.  
  17.  
  18. string tabla[n_fact];
  19.    for (int it = 0; it < n_fact; it++){
  20.  
  21.    // Totalmente perdido en esta parte como indiqué...
  22.    cout << tabla[it] << endl;
  23.    }
  24.  
  25. }
35  Foros Generales / Sugerencias y dudas sobre el Foro / Problema al clickear en vista previa de un tema. en: 31 Diciembre 2014, 12:12 pm
Vale, estaba probando los temas que había en el foro, y les di click a la vista previa, cuando me apareció esto...



No sé si será algo común, o situacional (me pasó en todos los que intentaba probar la vista previa), escribo esto porque hace ya cosa de unos meses, un usuario escribió un tema sobre un problema que tenía con su página y entré yo a mirarla, y días después se me acusó de que yo hiciese algo a dicha página cuando fue atacada ;_; (Aunque todo terminó resolviéndose), asi que esta vez, me curo en sano >_<

Y ya que estamos... off topic: ¿Qué tema os gusta más? A mí personalmente ninguno, creo que me quedaré con el de defecto.

Saludos!
36  Programación / PHP / Sobre la función rand() en: 30 Diciembre 2014, 00:09 am
Siempre he tenido la duda de como Rand, genera números al azar...

Código
  1. int rand ( int $min , int $max )

Código
  1. $random = rand ( 0 , 10 );

Para este caso, la variable random tendría un valor al azar entre 0 y 10, (11 posibles combinaciones), la duda está en... de esos 11, cómo coge uno al azar?

Me imagino un while, recorriendo todos los números y rompiéndose en cualquier momento, pero cómo? Y dicho sea de paso, hay alguna forma de ver como está funcionando una función(valga la redundancia), por dentro?

Saludos!
37  Programación / .NET (C#, VB.NET, ASP) / Obtener un valor variante en: 23 Mayo 2014, 12:02 pm
Bueno, la idea es saber si hay alguna forma de obtener un valor que está variando continuamente, y almacenar dicho valor en una variable.

Dejo un ejemplo:



En este caso valor_variante tiene un 24F, pero ese valor está variando constantemente, la idea es almacenarlo en una nueva variable llamada Obtener.

A simples ojos la idea es algo cómo.

Código
  1.        Dim valor_variante As String = "24F"
  2.        Dim ejemplo As String = "Esto sería un valor variante " & valor_variante
  3.  
  4.  
  5.        'Obtener el valor variante (?)
  6.        Dim obtener As String = valor_variante

Pero por desgracia los datos los estoy cogiendo de una página.

Me explico mejor

Código
  1. <?php echo 'Esto seria un valor variante ' . rand(0, 100)  ?>



He mirado sobre comodines en Vb.net, pero no ha terminado de servirme porque con 'like' solo me devuelve un boleano (true or false) y mi intención no es comparar dos strings, si no que yo quiero que me devuelva el valor que se encuentra ahí.

Otra forma sería con arrays, pero yo no puedo saber cuántos digitos va a tener el número, en este caso es el azar y el ejemplo es con números. (0 a 9, un digito), (10 a 99, dos digitos), (100, tres digitos), al ser al azar no puedo asumir que la posición vaya a ser siempre de 2 posiciones (qué sería lo más normal).

Si alguien puede ayudarme, gracias.
38  Programación / .NET (C#, VB.NET, ASP) / Parsear código HTML en Vb.net en: 12 Mayo 2014, 18:08 pm
Hola buenas, acostumbrado de PHP y su forma de parsear código.

Código
  1. preg_match_all('<b>Ejemplo de parsear, este numero es variante (.*) </b>', $ejemplo, $ejemplo1);

con el (.*) se obtenia el valor que se encontraba ahí. No encuentro una manera eficiente de hacerlo en VB.net

Mejor dicho no encuentro nada de información sobre cómo hacerlo en Vb.net, y la única solución que encuentro es haciéndolo de forma muy absurda.

Código
  1. Dim valor as integer = InStr(codigo_html.Text, "<b>Ejemplo de parsear, este numero es variante")

y a partir de ahí guardar la última posición en un entero (valor) y recorrer un for hasta que encuentre un "<" y salga de éste, como digo, me parece muy ineficiente y absurda.

¿Existe alguna 'mejor' forma, más cómoda de parsear?
39  Programación / .NET (C#, VB.NET, ASP) / VB.Net Mysql remoto. en: 10 Mayo 2014, 11:20 am
Hola, estaba probando Mysql con Vb.net y en localhost funcionaba sin problema, el caso es que a la hora de usar una base de datos que tengo yo en internet alojada en un host, el programa no se conecta con la base de datos.

He estado leyendo y al parecer es debido a que el host no permite Mysql de forma remota, o de aplicaciones externas.

Entonces mi pregunta es, hay alguna alternativa?

Mi intención es crear un logeo que pueda administrar desde mi ordenador. Por ejemplo, dos personas tienen el programa y en mi base de datos desde mi pc añado dos usuarios para esas dos personas.

Hay algún host que permita el uso de aplicaciones externas?

Un saludo y gracias.
40  Programación / Programación C/C++ / C++ argumentos en el main. en: 7 Mayo 2014, 05:23 am
Muy buenas, estos días he estado practicando con c++, y me surgió un problema, mi intención es leer un string, y tranformar carácter por carácter a ASCII, si este es par, sumarle 1 y devolver el caracter, y si es impar, restarle uno y más de lo mismo.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. char transformar_caracter(char letra){
  6.  
  7.    int n = int(letra);
  8.  
  9.    if (n%2 == 0){
  10.        n++;
  11.    }else{
  12.        n--;
  13.    }
  14.    return char(n);
  15. }
  16.  
  17. int main(){
  18.    if(argc < 2){
  19.            return false;
  20.    }
  21.  
  22.    string frase;
  23.    getline(cin, frase);
  24.  
  25.    int tam = frase.size();
  26.  
  27.  
  28.    for(int i=0; i<tam; i++){
  29.    cout << transformar_caracter(frase[i]);
  30.    }
  31. }

Hasta aquí funciona a la perfección, pero mi intención es ejecutarlo desde la consola. Para eso cambie el código añadiendo los argumentos típicos del main.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. char transformar_caracter(char letra){
  6.  
  7.    int n = int(letra);
  8.  
  9.    if (n%2 == 0){
  10.        n++;
  11.    }else{
  12.        n--;
  13.    }
  14.    return char(n);
  15. }
  16.  
  17. int main(int argc, char *argv[]){
  18.    if(argc < 2){
  19.            return false;
  20.    }
  21.  
  22.    string frase = argv[1];
  23.    // getline(cin, frase);
  24.  
  25.    int tam = frase.size();
  26.  
  27.  
  28.    for(int i=0; i<tam; i++){
  29.    cout << transformar_caracter(frase[i]);
  30.    }
  31. }

El problema se encuentra en la linea 23, básicamente, antes usaba Getline para así leer toda la linea, y que el string no se parase al leer el espacio, ahora el problema está en que al ejecutarlo por consola,  únicamente lee hasta el espacio y no encuentro forma de usar el getline como argumento.

No sé si me explico...

Gracias de antemano!.
Páginas: 1 2 3 [4] 5 6 7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines