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


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ... 295
261  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: como anular GPRS en Motorola v3 pregunta en: 2 Marzo 2021, 04:24 am
Alguien sabe como se anula el gprs en el motorola v3 el antiguo el del 2004
Con una caja de faraday xD
262  Foros Generales / Foro Libre / Re: ONU: Hay evidencias de que el gobierno ruso está implicado en el envenenamiento de Navalny en: 2 Marzo 2021, 03:51 am
WOOOW qué sorpresa O.o

Atónito me quedo. Fallo mío por desconfiar de los congoleños.
263  Foros Generales / Foro Libre / Re: ¿Una máquina de programar en cualquier lenguaje? en: 1 Marzo 2021, 14:54 pm
Poco se habla de los avances de la IA y de lo que supone para humanidad a corto, medio y largo plazo.

Realmente hay transpilers que te convierte código en languaje X a código en lenguaje Y.

No debe ser lo más complejo del mundo hacer esto para español -> python por ejemplo con IA.
264  Foros Generales / Dudas Generales / Re: ¿Que es LUA? en: 28 Febrero 2021, 07:55 am
Puedes descargarte Lua 5.X o Lua Jit para interpretar código LUA.

Lua Rocks para bajarte módulos.

No tiene mucho módulo, tiene poca documentación, muchos errores y demás que tienes que subsanar por tu cuenta. Necesitas conocimientos intermedios-avanzados de sistemas para ir arreglando y configurando cosas muy básicas como puedan ser las rutas en las que se buscan los módulos usando un sistema virtual de ficheros.

El lenguaje en sí tiene un montón de cosas muy sencillas, pero también tiene otras cosas poco friendly para newbies como las patterns (las expresiones regulares de lua), lua sockets(no es ni librería std, por defecto no tiene modulo de red lua y es poco amigable el uso de sockets, las iteración de tablas, comprobaciones constantes para evitar que variables y tablas tengan nil, el stack de C tampoco es demasiado amigable, asique escribir módulos en C para lua tampoco es algo que aprendas a hacer en 2 minutos si no estás acostumbrado...

El lenguaje en sí es muy bueno y potente. El problema es la falta de soporte y la poca comunidad que hay.

A pesar de todo esto, se usa en un montón de programas. Principalmente suele usarse como "añadido" a juegos para tener una consola con la que configurar cosas del juego, hacer chats in-game y cosas similares.

También se usa mucho como lenguaje de scripting para todo tipo de programas. A parte de los que te comenta El Brujo, otro muy popular es Nmap y Ncat.
Nmap te permite agregar scripts para configurar el scanner o hacerle plugins para que haga otras cosas. Lo mismo con Ncat, donde puedes programar un montón de utilidades como podría ser el caso de un pequeño proxy ftp, dns, un scanner, etc.

Otro uso común es el de chicle entre diversas tecnologías y lenguajes. Dado su pequeño tamaño y su integración total con C, es común que se use para hacer de intermediario entre lenguajes o para unir componentes de un mismo lenguaje.

Una de las mayores ventajas es que corre en todos lados. Está bastante cerca del programa una vez, corre en todos los sitios, no tienes que andar haciendo condicionales y defines raros.

Es un lenguaje que dentro de lo que cabe, se aprende en muy muy poco tiempo, pero a pesar de ser un lenguaje potente, no es un javascript con 1000 metodos distintos de fábrica para unir strings, buscar texto, darle la vuelta... Está diseñado para traer lo mínimo indespensable y que tu personalmente le añadas exactamente lo que necesites usando librerías de tercero o las tuyas propias.

Yo lo suelo utilizar para servidores web y scripts para netcat, aunque no estoy muy contento con la librería de luasockets y todas las comprobaciones extra que acabo haciendo para cosas simples.

Este código son 3 funciones que hice para un servidor web y que comparto para poder comentar peculiaridades de la sintaxis y del lenguaje:

Código
  1. function split(string, pattern)
  2.  if string == nil or pattern == nil then return "" end
  3.  local lines = {}
  4.  for i in string.gmatch(string, pattern) do
  5.    lines[i] = i
  6.  end
  7.  return lines
  8. end


Las funciones se definen con la palabra clave funcion.
Los condicionales no requieren parámetros.
Nil es literlamente nada. Viene del latín y en la práctica es similar al Null de otros lenguajes.
then y end se utilizan en lugar de los típicos corchetes de apertura y cierre respectivamente.
Local limita el alcance de las variables a la función en la que se encuentra
{} crea una tabla, que es un contenedor que sirve para muchas cosas distintas.
string.gmatch acepta un string y una pattern de lua para ir retornando el siguiente resultado de la búsqueda en cada iteración.

Código
  1. function read_config()
  2.  package.path =  "./config/?.config;" .. package.path
  3.  local fd = io.open("./config/config.config", "r")
  4.  if not fd then
  5.    print("[debug]File not found")
  6.  end
  7.  local lines = fd:read "*a"
  8.  fd:close()
  9.  --print("File Content:\n" .. lines)
  10.  lines = split(lines, "([^\n]*)\n?")
  11.  for key, val in pairs(lines) do
  12.    val = string.lower(val)
  13.    if val == "use_static_headers[true]" then
  14.      print("[debug]Getting getting static headers")
  15.      server_headers = require("static_headers")
  16.      --[[for k, v in pairs(server_headers) do
  17.         print(k .. ": " .. v)
  18.       end]]--
  19.    elseif val == "custom_methods[true]" then
  20.      print("[debug]Getting getting custom methods")
  21.      server_methods = require("custom_methods")
  22.      --[[for i = 1, #server_methods do
  23.         print(server_methods[i])
  24.       end]]--
  25.    end
  26.  end
  27. end
En esta función declaro de forma explicita la ruta que quiero añadir para que se busque en el sistema y le concateno el resto de package.path para que pieda seguir cargando módulos en las path originales.
A continuación leo todo el fichero con la opción *a.
Utilizo el método split que definí previamente usando una pattern para obtener todo lo que hay entre 2 saltos de linea.
Itero la tabla con pair para ptener el iterador y el valor.
Un poco más abajo hay un comentario multilinea.
El # es para obtener el length de un elemento.


[code=LUAfunction splitHeader(header)
  local aux = ""
  local index = 1
  local key = ""
  local value = ""
  for i = 1, #header do
    if header:sub(i, i) ~= ":" then
      if aux == nil then
   aux = header:sub(i, i)
      else
        aux = aux .. header:sub(i, i)
      end
    else
      index = i
      key = aux
      break
    end
  end
  for index = index + 1, #header do
    value = value .. header:sub(index, index)
  end
  --print("KEY:" .. key .. "\nVALUE:" .. value)
  -- value:match is removing leading/trailing spaces
  return key, value:match("^%s*(.-)%s*$")
end[/code]

Espero que sirva mi explicación!
265  Foros Generales / Foro Libre / Re: Joe Biden ordena su primera operación militar: EEUU bombardea a milicias proiraníes en Siria en: 27 Febrero 2021, 05:32 am
Gracias a dios en Iran son unos cagados xD
Si le hace eso a North Korea, le llueven más petardos que en fin de año.

El sabotaje continuo al programa nuclear de Iran es una locura.
266  Programación / Programación C/C++ / Re: Necesito ayuda para encontrar el problema en mi código. en: 18 Febrero 2021, 20:23 pm
Probaste a utilizar un debugger? gdb es bastante sencillo. Y/O haz una función que haga cout y la llamas tras cada linea del programa. debuggear("linea1") //hasta linea 1 funciona.
267  Programación / Programación C/C++ / Re: Ayuda porfavor! a function-definition is not allowed here en: 15 Febrero 2021, 08:58 am
Código
  1. int result;
  2. result=0;

Puedes definir el valor de result en la propia declaración:
int result = 0;

En la primera sentencia del bucle for, se te olvidó declarar el tipo de i:
for(int i = 0; bla bla bla

Puedes usar += para tu asignación a result dentro del bucle:
result+=max(a,b);

Como te comenta el compañero, tienes que hacer return del resultado de la funciones que declares con cualquier tipo que no sea void.

En tu función tendrías que retornar result trás el bucle for. En el código que compartes tienes result declarado antes de la función product, pero nunca lo usas fuera. Debe estár dentro de la función.

Código
  1. #include <iostream> // input(entrada) output(salida) stream(<< >>) cout es C salida, cin es C entrada
  2.  
  3. using namespace std; // te ahorra poner std::cout std::cin std::string std::getline ...
  4.  
  5. // Prototipo de funciones
  6. int min(int, int);
  7. int max(int a, int b); // aconsejable añadirle los nombres de los parametros que vas a usar abajo tambien aqui, para facilitar la comprension del codigo, a pesar de no ser estrictamente necesario.
  8. int product(int, int);
  9.  
  10.  
  11. // función principal
  12. int main(int argc, char **argv) { /* deberías declarar así siempre la funcion principal del programa. El primer argumento contiene el número de datos enviados por consola en el caso de correr el programa desde la cmd de Windows o la terminal de Linux.
  13. Por ejemplo en la cmd, miPrograma.exe 5 5
  14. Los argumentos se encuentran en el segundo parametro si lo recorres utilizando argv como tamaño, puedes obtenerlos para utilizarlos en tu programa en lugar de usar cin. Así es como se progaman los comandos de windows y linux.
  15. Te lo comento no porque tenga gran relevancia o sea algo que tengas que saber de memoria ahora mismo, si no para que no te suenen a chino cuando los veas en clase. */
  16.  
  17.  cout << "El resultado es: " << product(5, 5) << endl;
  18.  cin.get(); // Se suele utilizar para pausar el programa y que no se cierre sin que te de tiempo a ver los resultados.
  19.  return 0;
  20. }
  21.  
  22.  
  23.  
  24. // declaracion de funciones. Al estar debajo de main, tienen que tener su prototipo definido antes de main.
  25.  
  26. // Se aconseja comentar el código para entenderlo mejor. Ej:
  27. /* Retorna el entero menor de dos enteros */
  28. int min(int num1, int num2) {
  29.  if (num1 < num2) { /* si el primer parametro es menor que el segundo, entonces: */
  30.    return num1; // retorna el primer parametro
  31.  }
  32.  return num2; // retorna el segundo. Una vez se retorna una función, se sale de ella, asique si se retorna num2 es porque no se complio la condicion anterior que retornaba num1
  33. }
  34.  
  35. /* Esta funcion hace lo mismo que la anterior, pero retorna el mayor en lugar del menor */
  36. int max(int a, int b) {
  37.  if (a > b) {
  38.    return a;
  39.  } else { // En este caso da igual que se añada el else o no. Si en el if anterior hubiese un cout en lugar de un return, entonces si que sería importante el else. Debido a que no se retornaría a, se imprimiría, y sin el else la ejecucion continuaria retornando b despues de imprimir en pantalla a.
  40.    return b;
  41.  }
  42. }
  43.  
  44.  
  45. int product(int num1, int num2) {
  46.  int res = 0;
  47.  for(int i = 1; i <= min(num1, num2); ++i) {
  48.    res += max(num1, num2);
  49.  }
  50.  return res;
  51. }



Practica! Haz por ejemplo un programa que imprima en pantalla los números impares situados entre los 2 números que indique el usuario.
Otro al que le pidas al usuario su nombre y su apellido en minúsculas, y le pongas ambas iniciales en mayúsculas.
Un programa que te diga el número de letras y palabras que tiene una frase.
...

Vas practicando con las cosas más sencillas que se te ocurran y según vas mejorando, vas haciendo cosas cada vez más difíciles.

Para la programación te recomiendo 80% práctica y  20% teoría, y no al revés como solemos hacer muchos al inicio. Cada cosa que leas la tienes que usar 20 veces antes de leer la siguiente. Si no, se te acumulan una cantidad de conceptos en la cabeza que no puedes plasmar. Se te olvidan otras, mezclas varias...
268  Sistemas Operativos / GNU/Linux / Re: aprender a teclear comando en: 13 Febrero 2021, 17:17 pm
Estes son los comandos más básicos que se suelen usar:

ls
cd
cat
pwd
cp
mv
rm
mkdir
clear
touch
chmod +775
./
echo
vim
man
dpkg -l
pkg list-all
pkg list-installed
pkg install nombrePrograma
apt-get update && apt-get upgrade
exit

Puedes añadirles argumentos
ls -a
ls -h
ls --help

O rutas:

cd miCarpeta
cd ~/../usr

Puedes añadir condicionales:
Si el comando anterior funciona, ejecuta el siguiente.
mkdir nuevaCarpeta && cd nuevaCarpeta

Si el comando anterior no funciona, ejecuta el siguiente.
cd nuevaCarpeta || mkdir nuevaCarpeta

Puedes encadenar los que quieras así.


También puedes pasar el resultado de un comando al siguiente:
Por ejemplo lo siguiente muestra solo los primeros 20 caracteres del archivo que indiques.
cat miArchivo.txt | wc -c 20

Algunos de los modificadores más comunes:
wc
head
tail
cut
more
less
grep
figlet


A parte de redireccionar a otros comandos, también puedes redireccionar a archivos.

Crea un archivo o sobrescribe uno que ya existe:
echo 'Hola' > hola.txt

Añade al archivo:
echo 'Hola otra vez' >> hola.txt


Depués tienes una lista de comandos útiles casi infinita. Algunos de los más usados:
apache
curl
espeak
git
gcc
g++
lua53
lynx
make
netcat
nginx
nmap
node
npm
openssl
php
pip
python
quickjs
radare2
ssh
sqlite
tar
wget
unrar
unzip


Puedes mirar lo que hace cada uno usando:
comando -h
man comando
google.com/search?q=comando+linux


A parte de los comandos listados, tienes muchos programas en la carpeta bin.

cd ~/../usr/bin && ls

Mira también este tema.
https://foro.elhacker.net/gnulinux/tutorial_comandos_de_linux_bash-t508210.0.html
269  Media / Juegos y Consolas / Re: ¿Quieres mejorar tu AIM? en: 13 Febrero 2021, 04:48 am
Ahí van los míos. También jugué muchos años al OSU!

- Desactivar aceleración del ratón de Windows.
- Utilizar un ratón por cable y con sensor y buen pollling rate.
- Usar raw pointer en la configuración del juego si lo permite.
- DPI entre 450-750.
- Sensibilidad en juegos a 0/por defecto.
- Resolución disponible más próxima a 1400/720.
- Grip que solo toque el ratón. Ya sea Palm o Claw.
- Usar el brazo, no solo la muñeca. (Es más fácil mejorar en velocidad que en precisión).
- Limpiar el ratón y la superficie entre partidas con algo húmedo.
- Monitor con buen refresh rate.
- Configurar el sistema para tener buen número de fps.
- Cerrar programas y tirar de la red equipos que no estés usando para bajar el ping.
- Juega cuando te apetezca y no te frustres. A mejor juegues, mejor queda la memoria muscular. Si llevas 8 horas seguidas y sigues por inhercia sin prestar atención desarrollas malos hábitos.
- Mente en blanco. Pensar en mejorar mientras juegas te distrae de jugar (que es como mejoras).
- Paciencia, continuidad y disfrutar.
270  Foros Generales / Foro Libre / Re: Saben como puedo conseguir esto? en: 13 Febrero 2021, 04:26 am
Sí, mucho mejor por series que todas seguidas.

En los gimnasios te suelen indicar que hagas cinta 15 mins para calentar antes de empezar y después varias series de 10 en cada ejercicio.

Yo prefiero usar algo menos de peso y hacer series bastante más largas y lentas.
Páginas: 1 ... 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [27] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ... 295
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines