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ú

Mensajes - ThunderCls

#21
Hardware / Re: Ayuda con Overcloack.
10 Diciembre 2020, 21:18 PM
Imagino que quieres decir "Overclocking", que es basicamente hacer que un chip funcione a mayores frecuencias que las establecidas de fabrica. En la web como mencionas hay bastante informacion al respecto, temas referentes a: Base Clock, LLC, Ring Clock, vcore, vid, xmp...etc. Mucha informacion se encuentra en ingles, aunque quizas tambien puedas encontrar en español, Youtube es un buen lugar. A que sistema piensas hacer overclock?   
#22
Pues muy bien, muestranos lo que tienes hasta ahora hecho y explica que es lo que no sabes hacer o a partir de donde te has perdido
#23
Herramientas, Librerias, Codigos Fuentes, Articulos, Foros, Videos, etc
https://github.com/dsasmblr/game-hacking

* Este hilo podria estar mejor en ingenieria inversa

Saludos
#24
Compila en modo "Release".
#25
.NET (C#, VB.NET, ASP) / Re: Ocultar un botón
25 Noviembre 2020, 21:50 PM
Código (csharp) [Seleccionar]

// ...
button1.Visible = false;

Timer timer = new Timer();
timer.Interval = 10000;
timer.Tick += (sender, e) => {
   button1.Visible = true;
   timer.Stop();
}
timer.Start();
// ...


EDIT: Este hilo deberia ir en .NET  :¬¬
#26
Simplemente copialo en la misma ruta donde tenias la anterior copia. Cualquier launcher que uses debe reconocerlo sin problemas. Si llegaras a tener problemas, steam, origin, etc te brindan opciones para localizar juegos que hayan sido anteriormente instalados, por lo que no necesitas volver a descargar el juego.
#27
Si estas usando C++ te recomendaria "Curl for People" (https://github.com/whoshuu/cpr)
https://www.codeproject.com/Articles/1244632/Making-HTTP-REST-Request-in-Cplusplus

Por lo demas, aqui tienes muchos ejemplos de como usar libcurl:
https://curl.se/libcurl/c/example.html

Saludos
#28
Respondiendo a tu pregunta inicial, el acceso (lectura/escritura) a disco es mas costoso y posee mas latencia que el acceso a la DRAM, por lo que el manejo de datos sera mas rapido en RAM directamente que en un HDD/SSD. La respuesta obvia entonces seria que debes entonces cargar todo el fichero en memoria en lugar de leer "chunks" del disco?. Pues eso dependera de varios factores. Depende del tamaño del fichero que deseas manipular o de la eficiencia del uso de memoria que persigas o simplemente del diseño en particular que desees con tu software. Quizas puedes hacer como dices y leer todo el fichero en segmentos cada vez. Podrias tambien mapear el fichero en memoria y dejar que el SO maneje las paginas de memoria por ti, lo que podria llegar a ser mas rapido pero tambien puede tener sus dolores de cabeza.

Habiendo dicho lo anterior, creo que no estaria de mas hacerte algunas preguntas extras como:
- Que tan eficiente es tu diseño?. Cuan escalable? Podrias usar algun engine de bases de datos en lugar de "ficheros"?
- Estas seguro que la degradacion en rendimiento viene dada por esta situacion en particular? Haz usado algun "profiling tool" en tu codigo y confirmado lo anterior?
- Tu software usa o puede usar algun tipo de trabajo concurrente, procesamiento en paralelo? Multihilos?
- Podrias usar alguna libreria creada justamente con el fin de obtener el maximo rendimiento al leer grandes cantidades de datos en lugar de reinventar la rueda?
#29
Programación General / Re: Robot para Facebook.
19 Noviembre 2020, 14:35 PM
Simplemente usa Facebook Graph API
https://developers.facebook.com/docs/apis-and-sdks/
#30
Cita de: rubia28 en 18 Noviembre 2020, 11:39 AM
Buenos días,

Lo primero de todo, darte las gracias por tu ayuda, por más que busco y pruebo no soy capaz de dar con lo que se me pide..
He probado a añadir en el código lo que me indicas y me da error en la línea 9, está claro que es porque estoy haciendo algo mal, pero no consigo ver que es lo que está sin inicializar como me indica el programa.

Primero que todo, como te ha comentado Alberto, depender de llamadas al sistema (system) no es recomendable por varios motivos, uno de ellos es por la poca portabilidad que te brinda. La solucion mas "limpia" es implementar la peticion ICMP por ti misma, de esta forma te evitas dependencias y el codigo es mas portable. Sin embargo, implementar tu propia funcion ping no es una tarea trivial. Necesitas trabajar con raw sockets, DNS lookups y hacer toda la manipulacion del paquete ICMP por ti misma. Estamos hablando que necesitas tener conocimientos avanzados de sockets y nociones basicas de networking y/o del paquete ICMP, ademas de un conocimiento avanzado de C para poder implemetarlo todo. Una posible implementacion la puedes ver aqui:

https://www.geeksforgeeks.org/ping-in-c/amp/

En este caso, y dado tu nivel de C en estos momentos, yo diria que todo esto va muy por encima de ti. Si es algo que quieres aprender puedes empezar con todo lo que he comentado antes y crearte una version mejorada mas adelante, pero si por ahora necesitas el trabajo hecho, la opcion mas viable es depender de la utilidad del sistema, al menos es mi opinion.
En este caso si decides continuar usando la utilidad "ping", te vuelvo a comentar que lo mejor es el uso de la funcion "popen()" (pipes) en lugar de "system()" para manipular el resultado de la ejecucion del "ping" evitando el uso de ficheros

Referente a tu codigo, el uso de:

while (!feof(f))
    printf("%c", getc(f));


y

while (fgets(ip, MAX_IP_LEN, f))

deberian ser excluyentes, no debes usar ambos en este caso. Una posible variante a lo que tienes, usando popen() podria ser lo siguiente:

#include <stdio.h>
#include <stdlib.h>
#define MAX_IP_LEN 40
#define MAX_COMMAND_LEN 100
#define MAX_LINE_LEN 255
#define println() printf("\n")

void leerArchivo(const char *archivo);
void arrancarPing(const char *ip);

int main(void)
{
    char opcion;
    char archivo[MAX_LINE_LEN];

    printf("Seleccione la opción que desea realizar: \n\n"
        "a. Una función que lea el contenido de un archivo .txt con diferentes direcciones ip, en la que la ruta del archivo se solicitará al usuario por pantalla. La ruta y nombre del archivo tienen que ser preguntados al usuario y visualizados por pantalla. Por último, el programa debe lanzar un ping para cada una de las direcciones ip del archivo e informar cuales de ellas responden correctamente a este comando."
        "b. Sin desarrollar.\n\n"
        "c. Sin desarrollar.\n\n"
        "d. Salir del programa. \n\n");
    scanf("%c", &opcion);

    while (opcion != 'a' && opcion != 'A' && opcion != 'b' && opcion != 'B' && opcion != 'c' && opcion != 'C' && opcion != 'd' && opcion != 'D')
    {
        printf("Opción incorrecta, eliga una de las opciones disponibles. (a,b,c o d).\n");
        fflush(stdin);
        scanf("%c", &opcion);
    }

    switch (opcion)
    {
        case 'a':
        case 'A':
            printf("\n Introduce la ruta del archivo a leer: \n");
            println();
            scanf("%s", archivo);
            println();
            leerArchivo(archivo);
            break;
        case 'b':
        case 'B':
            printf("Prueba de funcionamiento opcion B\n");
            break;
        case 'c':
        case 'C':
            printf("Prueba de funcionamiento opcion C\n");
            break;
        case 'd':
        case 'D':
            break;
    }

    return 0;
}

void leerArchivo(const char *archivo)
{
    FILE * f;
    char ip[MAX_IP_LEN] = { 0 };

    f = fopen(archivo, "rt");
    if (f == NULL)
    {
        printf("Problemas de apertura del archivo\n");
    }
    else
    {
        while (fgets(ip, MAX_IP_LEN, f))
        {
            arrancarPing(ip);
        }

        fclose(f);
    }
}

void arrancarPing(const char *ip)
{
    char line[MAX_LINE_LEN] = { 0 };
    char command[MAX_COMMAND_LEN] = { 0 };
    FILE * fp;

    snprintf(command, MAX_COMMAND_LEN, "ping %s", ip);
    fp = popen(command, "r");
    if (fp == NULL)
    {
        /*Handle error */
        return;
    }

    while (fgets(line, MAX_LINE_LEN, fp) != NULL)
    {
        /*Execution output */
        /*Verifica aqui la respuesta del host */
        printf("%s", line);
    }

    pclose(fp);
}