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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 22
1  Programación / Programación C/C++ / Re: C++ Challenge en: 12 Mayo 2022, 12:27 pm
Una solución rápida que se me ocurre es esto:

La función que recibe los comandos del usuario los pondría en algún tipo de cola, de forma sincronizada (usando una región crítica, por ejemplo). Cuando el usuario llama a la función Analizar(), ésta va tomando cada comando de la cola (obviamente, de forma sincronizada) y ejecutándolo. Dado que no quieres que un comando bloquee la ejecución de otro, esta función podría lanzar un hilo que ejecute cada uno de ellos. Para que esto no sea muy ineficiente, te recomendaría usar un "pool", que podrías crear tú, o usar el de Windows (la familia de funciones *Threadpool* de la API de Windows).

El comando CuentaRegresiva lo podrías manejar dentro de un bucle y haciendo llamadas a Sleep(1000) luego de cada mensaje "Faltan X cantidad de segundos", porque como se ejecuta en su propio hilo, no bloquearía el programa; o algo más elegante sería usar funciones de colas de temporizadores (Timer Queues) que la API de Windows proporciona. Éstos se ejecutan de forma periódica; en tu caso harías que esto ocurriera una vez por segundo. Podrías pasarle a la función callback de cada timer un puntero a una variable con el valor inicial recibido en el comando CuentaRegresiva (10 si fueran 10 segundos, etc.) y ésta, en cada ejecución lo decrementaría. Una vez que ese valor llega a 0, detienes (destruyes) el timer.

Dado lo anterior, Inicializar() podría inicializar las regiones críticas, y Apagar() esperaría a que los hilos terminen su ejecución (mediante la función WaitFor* correspondiente al tipo de hilo que decidas usar).

No me detengo en cada punto de los que pusiste porque me parece que algunos son muy simples.  Creo que lo único que podría tener cierta complicación es el tema de procesar comandos sin que uno bloquee los demás, y quizás la implementación de la cuenta regresiva; de ahí que me centrara en estos temas.


Yo había pensado algo similar, me voy a poner a ver algunos conceptos que nombraste, muchas gracias por tu punto de vista, saludos (Y)
2  Programación / Programación C/C++ / C++ Challenge en: 7 Mayo 2022, 15:12 pm
Buenas a todos,

tengo un challenge o problema, que realmente me gustaría saber que piensan al respecto o de que manera podrían resolverlo para tener todos los punto de vista posible.

Intro:
Hacer una dll que tenga 3 funciones, para procesar comandos (tipo los que se usan por cmd)

Inicializar() - inicializa todos los recursos en la dll

Apagar() - libera los recursos en la dll (de manera limpia) y termina todos los comandos que están corriendo.

Analizar() - se llama cada tanto (puede variar entre 50ms y 150ms) para procesar las cosas dentro de la dll

A todo ésto hay que definir e implementar una interfaz para la funcionalidad del "Procesador de Comandos", que debe cumplir con:

  • El usuario debe poder llamar a una función para pasarle el comando, como por ej: "comando argumento1 argumento2 ..."
  • El usuario debe proveer un único callback estático para el "Procesador de Comandos" el cual sirve para devolver la salida (en string) de los comandos ejecutados
  • El usuario debe poder proporcionar algunos datos de contexto arbitrarios a la función de entrada cuando ingresa su comando. Cuando se procesa el comando y se emite la salida, este contexto debe devolverse(output) a través del callback además de la cadena de salida.
  • Los comandos solamente son procesados en respuesta a la llamada de la función Analizar(), el usuario puede brindar varios comandos antes de llamar a esta función, en este caso,estos argumentos se deben procesar en el orden en que se recibieron, pero no es necesario que se procesen todos en una sola llamada a la función Analizar(). Los comandos de ejecución prolongada no deben bloquear la ejecución de otros comandos.
  • Las funciones de la interfaz siempre se van a llamar desde un solo thread. El usuario debe poder llamar a la función de entrada de comando de forma segura desde el código dentro de su devolución(output) del callback.

Deben ser soportado los siguientes argumentos por el Procesador de Comandos:
  • Mostrar [argumentos] ... Muestra todos los argumentos de comando textualmente en la devolución(output) del callback, delimitados por espacios. Si no se especifican argumentos, muestra una línea vacía.
  • CuentaRegresiva <segundos> Hace una cuenta regresiva según los segundos ingresados, mostrando un mensaje cada segundo vía la devolución(output) del callback. Cuando el comando se procesa por primera vez, debe devolver "Faltan X cantidad de segundos". El mensaje debe repetirse una vez por segundo, cuando llegue a cero, debe mostrar "Cuenta regresiva terminada".

Si se ingresa un comando extraño/no sportado, que muestre "Comando no soportado" en la devolución(output) del callback.

Desde ya muchas gracias a todos, saludos.
3  Programación / PHP / Re: Escribir Archivo UTF8 en: 6 Abril 2022, 21:48 pm
Bueno, luego de mucho buscar, se me dió por pensar que debe estar tomando el byte en vez del string, lo cual es raro, porque los precompilados no manejan tipo de datos, pero bueno, era éso, al loopear una string hay que hacer algo feo como ésto

Código
  1. for ($i = 0; $i < strlen($chars); $i++)
  2. {
  3.    WriteFile("test.txt", mb_substr($chars, $i, 1));
  4. }
  5.  

Espero que le sirve a alguien xD

Saludos!
4  Programación / PHP / Escribir Archivo UTF8 en: 6 Abril 2022, 21:14 pm
Hola buenas,

estoy teniendo un problema, tengo la siguiente string

abcdefghijklmnñopqrstuvwxyz 0123456789º'¡`+´ç<,.-/*ª!"·$%&()=?¿^¨Ç;:_\|@#~€¬[]{}

cuando intento guardar cada caracter en líneas diferentes, se rompe:

Código
  1. function WriteFile($file, $data)
  2.    {
  3.        //file_put_contents($file, $data.PHP_EOL , FILE_APPEND | LOCK_EX);
  4.        $fp = fopen($file, "a+");
  5.        fwrite($fp, $data.PHP_EOL); //\r\n doesn't work neither
  6.        fclose($fp);
  7.    }
  8.  

Si la guardo sin el "newline" se guarda bien (todo en una línea), acá dejo como se guardan con el newline.

https://pastebin.com/5hM6W5qp

Alguno tiene idea de como solucionar ésto?

Desde ya muchas gracias, saludos!
5  Programación / Scripting / Re: RegEx en: 24 Junio 2018, 06:12 am
Bueno, es lo que pasa si no especificas a qué sintaxis de RegEx estás sujeto, ni tampoco que significa exactamente "no me está funcionando", ¿no se te compila?, ¿no se captura lo que necesitas?. Sin más información por tu parte lo único que puedo decirte es que la expresión regular que compartí funciona de forma esperada al menos en el motor RegEx de .NET Framework y realizando la captura en la muestra de código que compartiste de C/C++.

Saludos

Ah, no sabía que habían muchos RegEx o diferentes sintaxis, me refería a la página posteada, pero en la búsqueda de VS 2013 está funcionando, muchas gracias por la ayuda!

Saludos.
6  Programación / Programación General / Re: Hilo oficial: Solicitudes de Expresiones Regulares en: 22 Junio 2018, 16:35 pm
Buenas, estaba buscando una expresión que no sé como terminarla, para no volver a postear todo, lo había posteado acá por error: https://foro.elhacker.net/scripting/regex-t484967.0.html
7  Programación / Scripting / Re: RegEx en: 22 Junio 2018, 16:19 pm
Solo te falta excluir de la captura cualquier caracter a la derecha de los caracteres de comentario, y capturar la palabra completa "cout", es decir:

Código:
(?<!\/\/(.+)?)\bcout\b

PD: para la próxima vez: Hilo oficial: Solicitudes de Expresiones Regulares

Saludos.

Ok, para la próxima posteo ahí, una cosa, el código no me está funcionando :(

Gracias por todo.
8  Programación / Scripting / Re: RegEx en: 20 Junio 2018, 21:19 pm
Pude lograr algo, pero no todo:

http://www.rubular.com/

regular expression: (?<!\/\/)(cout)

texto de prueba:

Código
  1. printf ()
  2. cout <<
  3.    cout <<
  4.    //    cout <<
  5. //cout <<
  6. // cout << endl << endl;
  7. // // //cout << "PosY: " << dec << (DWORD)TestPosY << endl << endl;
  8.  

9  Programación / Scripting / RegEx en: 20 Junio 2018, 20:13 pm
Buenas, no sé si ésto vá acá, pero estaba buscando la manera de hacer en Regular Expression lo siguiente:

tengo un código fuente que tiene

Código
  1.    //cout <<
  2.    cout <<
  3.  

lo que quiero hacer es que me busque los cout que no están comentados, intenté de muchas maneras pero no puedo hacerlo funcionar :@

alguna idea? sigo probando, gracias!
10  Programación / .NET (C#, VB.NET, ASP) / Lista de grupo de controles en: 2 Abril 2017, 04:32 am
Hola, en un programa ví que había un contenedor y tenía como una lista de items, que a su vez se podía expandir y contraer, adentro tenían más controles, y parecía como si fuera bastante dinámico, como agregar un item a una lista pero con todos esos controles ya predefinidos, estuve viendo algo sobre LayoutPanel pero no logro hacerlo, alguna idea?

Acá está la imagen que ví, http://www.artificialaiming.net/sshots/Client/client-subs-open-info.JPG
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines