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


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 229
1  Foros Generales / Foro Libre / Re: En honor a quienes caminaron antes que nosotros (en el foro) en: Hoy a las 06:47
Al unico que que veo aún aquí es a brujo que me llego a meter a un wargame que se hizo acá en el foro para entrenar gente
¿Me puedes explicar mejor dónde o cómo lo viste? Hace casi 2 meses que espero me responda un asunto y tampoco lo he visto postear en el foro.

¿O tu comentario es un sarcasmo/bait?

En otro tema preguntas qué pasó con el foro. Yo participo desde hace unos 10 7 años creo, no lo noto tan distinto. Antes no sé, pero no es poco común que un foro pierda actividad, las causas no las sé, en mi caso que me borraron comentarios sin explicación. Ahora postié porque es un caso especial ya que dijiste que viste al admin, pf, espero que sea cierto.

¿Y tú por qué te fuiste? Quejarse es fácil pero por haberte ído eres, probablemente, parte del culpable de que el foro haya perdido actividad o calidad según tu criterio.
2  Foros Generales / Sugerencias y dudas sobre el Foro / Hace como 1 mes envié un mensaje al administrador y no lo respondió. en: 24 Febrero 2025, 21:21 pm
Ni siquiera ha posteado en algún tema, o no lo he visto.

Hace poco he tenido días difíciles así que no estoy de ánimo para luchar por un foro más justo, si es que al admin le interesa, o para entender qué pasa con algún moderador o algunos, que me borra/n mensajes injustamente y sin explicar, pero, dejo este comentario, que quizá sea borrado también, meh, pero algún usuario lo verá:

Si quieren decirle algo al admin, mejor por email, quizá, es un consejo.

Yo es que paso de hablar por email con un hacker.

Mi idea era que él me explique o solucione el problema y luego seguir participando en el foro. Pero al parecer está muy ocupado, complicado, o no le interesa lo suficiente mi asunto o lo que pasa en su foro. O a lo mejor es una fachada y en realidad es de algún moderador.

No quiero hacer aportes a un foro que es injusto conmigo.

https://www.youtube.com/watch?v=htOqsFL14YU
3  Programación / Programación General / Captar victoria en juego estilo 3 en línea. 2 contiguos solamente. en: 20 Enero 2025, 19:40 pm
La cantidad de casilleros por fila y columna es configurable.

La cantidad de contiguos para ganar, también.

Pero por ahora quiero resolver el caso de 2 contiguos simplemente.

La situación se guarda en un array, es decir lo que tiene cada casillero, por ejemplo esta:
vv0
vXv
vvv
Es: v, v, 0, v, X, v, v, v, v
donde v es vacío

Mi idea es que, cuando un casillero se marque, se mire arriba, luego arriba-derecha, y así sucesivamente como las agujas de un reloj.

El reto es averiguar qué casillero en el array es el de arriba, y demás. Y si es que existe, sino capaz que mira alguno que no debe, no sé.

Si por ejemplo el casillero marcado es el nro 0, el de arriba no existe, el de arriba-derecha tampoco, el de la derecha es su +1...
Pero si se marca el nro 2, el de su derecha no es el +1, sino que no existe.

Quizá la mejor forma de resolver esto es creando variables estilo:
Casillero0_0 = "v"
Casillero1_0 = "v"
Casillero2_0 = "0"

Pero entre más grande sea el tablero, más variables así habría y son una copia de las otras así que no parece buena idea.

Debe haber una forma de calcular en qué posición del array está el casillero contiguo que se quiere mirar ¿cómo?
4  Programación / Programación General / Indicar que una acción no debe usarse. en: 20 Enero 2025, 04:16 am
Intento hacer una IA que aprenda a poner una X en un tablero y luego otra en la derecha o izquierda.

El problema que intento resolver en cuanto a eso, es que puede poner una X donde ya hay, debo evitarlo.

Sé que debo poner algo como:
Código:
if (Situacion[Action] == "v") {
   // Es realizable, realizarla...
sino
   // No, ver si hay otra...
Pero no sé bien qué pasa, es como que si hago eso tendría que poner código igual en distintos lados (aunque a ese código lo convierta en una función, siento que es innecesario que se repita), innecesariamente.

Aún no tengo el código completo. Díganme cómo pondrían uds ese if, dónde, o cómo harían.

Código
  1. // 2 en línea horizontal, en tablero de 2x2, sólo X:
  2. //
  3. // Uso arrays porque es más fácil así modificar los nombres...
  4. // de variables:
  5. //
  6. // Los casilleros están numerados así:
  7. // 0 1
  8. // 2 3
  9. // Situación inicial (v es casillero vacío):
  10. SituacionBase = ["v", "v", "v", "v"];
  11. // Ponerla en la lista de situaciones a experimentar:
  12. SaE1 = SituacionBase.slice();
  13. // Situaciones a experimentar (cuántas son):
  14. SaE = 1;
  15. NroDeSExperimentandose = 1;
  16. NombreDeSE = "S"+(SaE1.join(""));
  17. // Acción a realizarse (casillero a marcar):
  18. Action = 0;
  19. function BuscarAccionesGanadoras () {
  20. PlantearSyActuar();
  21. // ¿Ganó?
  22. // Para averiguarlo, calcular fila (contando desde 0):
  23. Fila = Math.floor(Action/2);
  24. // trace(" Fila: "+Fila);
  25. if (Situacion[Fila*2] == Situacion[Fila*2+1]) {
  26. // trace("Situacion[Fila*2] == Situacion[Fila*2+1]: "+Situacion[Fila*2]+" == "+Situacion[Fila*2+1]);
  27. // Sí, crear datos sobre eso:
  28. // En la situación base conviene la acción realizada:
  29. set (NombreDeSE+"BestAction", Action);
  30. // En esa situación se requiere 1 acción para ganar:
  31. set (NombreDeSE+"DistanciaaGanar", 1);
  32. trace("Ganó, ahora se sabe que en la situación "+SituacionBase+" se gana usando la acción "+Action);
  33. // ¿Aún hay situaciones a experimentar?
  34. if (SaE > NroDeSExperimentandose) {
  35. IniciarExperimentosEnOtraS();
  36. } else {
  37. // Comenzar la etapa 2.
  38. IniciarEtapa2();
  39. }
  40. } else {
  41. EvaluarConocimientoSobreSyEtc();
  42. }
  43. }
  44. function PlantearSyActuar () {
  45. // Plantear situación porque puede modificarse pero...
  46. // podría requerirse su estado original luego:
  47. Situacion = SituacionBase.slice();
  48. trace(" La situación experimentándose es "+Situacion);
  49. // Aplicación de la acción:
  50. Situacion[Action] = "X";
  51. trace(" Se realizó la acción "+Action+"; ahora la situación es "+Situacion);
  52. }
  53. function IniciarExperimentosEnOtraS () {
  54. NroDeSExperimentandose++;
  55. SituacionBase = eval("SaE"+NroDeSExperimentandose);
  56. // trace("SituacionBase: "+SituacionBase);
  57. // Reset de la acción a probar:
  58. Action = 0;
  59. trace("Se inician experimentos en otra situación");
  60. }
  61. function IniciarEtapa2 () {
  62. DistanciaaGanarAceptada = 1;
  63. trace("Se experimentaron todas las situaciones; se reexperimentarán buscando resultados menos óptimos");
  64. trace("Son "+SaE+" situaciones; se acepta que la distancia a la victoria sea "+DistanciaaGanarAceptada);
  65. gotoAndStop (3);
  66. }
  67. function EvaluarConocimientoSobreSyEtc () {
  68. SituacionHechaTexto = Situacion.join("");
  69. NombreDeSituacion = "S"+SituacionHechaTexto;
  70. Resumen = NombreDeSituacion+"BestAction";
  71. if (eval(Resumen) == undefined) {
  72. // No, anotar que debe investigarse:
  73. SaE++;
  74. set ("SaE"+SaE, Situacion.slice());
  75. trace("Esa situación no está anotada; se anota como nro "+SaE);
  76. // Esto para saber que está anotada:
  77. set (Resumen, "Desconocida");
  78. }
  79. // ¿Queda alguna acción sin probar?
  80. if (Action < 3) {
  81. // Sí, probar otra:
  82. Action++;
  83. } else if (SaE > NroDeSExperimentandose) {
  84. // Sino si aún hay situaciones a experimentar:
  85. trace("No hay más acciones posibles en la situación");
  86. IniciarExperimentosEnOtraS();
  87. } else {
  88. // Comenzar la etapa 2.
  89. IniciarEtapa2();
  90. }
  91. }

Ah, BuscarAccionesGanadoras se repite hasta que empiece la etapa 2.
5  Programación / Programación General / ¿Qué lío he hecho con mi generador de tableros estilo 3 en línea? en: 19 Enero 2025, 23:57 pm
Así funcionaba:
Código
  1. function HacerTablero () {
  2. MaxCasillero = CasillerosPorFila*CasillerosPorFila;
  3. LargoDeCasilleros = 384/CasillerosPorFila;
  4. CasillerosColocados = 0;
  5. // Sus columnas y filas se cuentan desde 0,
  6. // sirven para posicionarlos más fácil:
  7. Columna = 0;
  8. Fila = 0;
  9. do {
  10. CasillerosColocados++;
  11. CasilleroaColocar = "Casillero"+CasillerosColocados;
  12. // v es vacío.
  13. set ("SignoEn"+CasilleroaColocar, "v");
  14. // sCasillero tiene código.
  15. attachMovie("sCasillero", CasilleroaColocar, CasillerosColocados);
  16. setProperty (CasilleroaColocar, _x, LargoDeCasilleros*Columna);
  17. setProperty (CasilleroaColocar, _y, LargoDeCasilleros*Fila);
  18. setProperty (CasilleroaColocar, _width, LargoDeCasilleros);
  19. setProperty (CasilleroaColocar, _height, LargoDeCasilleros);
  20. Columna = Columna+1;
  21. if (Columna == CasillerosPorFila) {
  22. Columna = 0;
  23. Fila = Fila+1;
  24. }
  25. // Para que al presionar el botón se sepa qué modificar:
  26. set (CasilleroaColocar+".CasilleroAsociado", CasillerosColocados);
  27. } while (CasillerosColocados<MaxCasillero);
  28. }

Intenté poner que se cuenten desde 0 en vez desde 1 (o sea, que en vez de Casillero1, Casillero2, etc, sean Casillero0, Casillero1, etc) y ahora anda mal, pone uno menos y además lo borra mal (eso es otro tema):

Código
  1. function HacerTablero () {
  2. // Esto se irá especificando en el while:
  3. Situacion = [];
  4. PosiblesAcciones = [];
  5. // Los casilleros se cuentan desde 0:
  6. MaxCasillero = CasillerosPorFila*CasillerosPorFila-1;
  7. LargoDeCasilleros = 384/CasillerosPorFila;
  8. NroDeCasillerosaColocar = -1;
  9. // Sus columnas y filas se cuentan desde 0,
  10. // sirven para posicionarlos más fácil:
  11. Columna = 0;
  12. Fila = 0;
  13. do {
  14. NroDeCasilleroaColocar++;
  15. // v es vacío:
  16. Situacion.push("v");
  17. PosiblesAcciones.push(NroDeCasilleroaColocar);
  18. CasilleroaColocar = "Casillero"+NroDeCasilleroaColocar;
  19. // set ("SignoEn"+CasilleroaColocar, "v");
  20. // sCasillero tiene código.
  21. attachMovie("sCasillero", CasilleroaColocar, NroDeCasilleroaColocar);
  22. setProperty (CasilleroaColocar, _x, LargoDeCasilleros*Columna);
  23. setProperty (CasilleroaColocar, _y, LargoDeCasilleros*Fila);
  24. setProperty (CasilleroaColocar, _width, LargoDeCasilleros);
  25. setProperty (CasilleroaColocar, _height, LargoDeCasilleros);
  26. Columna = Columna+1;
  27. if (Columna == CasillerosPorFila) {
  28. Columna = 0;
  29. Fila = Fila+1;
  30. }
  31. // Para que al presionar el botón se sepa qué modificar:
  32. set (CasilleroaColocar+".CasilleroAsociado", NroDeCasilleroaColocar);
  33. trace("Colocado el "+NroDeCasilleroaColocar);
  34. } while (NroDeCasilleroaColocar<MaxCasillero);
  35. }

Si el tablero es de 3*3, se deben colocar 9, pero el máximo será 8 porque se cuentan desde 0. Y puse que el 1er colocado sea el 0. Pero el trace no lo indica, el 1er trace es del 1:
Colocado el 1
Colocado el 2
...
Colocado el 8

¿Qué pasa?

Edit: Creo que era una s de más, sorry >___<

NroDeCasillerosaColocar = -1;
debe ser:
NroDeCasilleroaColocar = -1;
6  Seguridad Informática / Hacking / Re: Hackeo de una cuenta de instagram en: 18 Enero 2025, 00:57 am
Pregunta a los de Insta si hay una opción para ver cómo se ha ingresado últimamente. Desde qué dispositivo, Windows, IP, esas cosas.
7  Programación / Programación General / Busco testers para mi generador de dibujos, hallar errores, paso el editable también. en: 15 Enero 2025, 16:18 pm
El siguiente link tiene un exe, un fla que es el archivo editable, y un swf que es como un exe menos peligroso pero sólo sirve si tienen Flash Player.
Actualización de acuerdo al momento en que el post fue editado: 25-01-15, 16:18
https://drive.google.com/file/d/17Mn04J7GUnn4CGaqjnE70UeGHISAVqbN/view?usp=sharing

Nota: Al cliquear un dibujo, muta.

Errores conocidos que intentaré arreglar más adelante:

1: La flecha de abajo que apunta a la izquierda, cuando se usa en la 1er pantalla quiero que lleve a las opciones de la última, pero aún no existe, así que está mal, no la usen en la 1er pantalla, saca las opciones y el programa se vuelve inusable.

2: Los botones de colores en la 2nda pantalla (flecha de abajo que apunta a la derecha) no deberían estar ahí. No los usen porque aún no llegué a arreglar esa parte, esos botones quedaron ahí por error.

3: No hay 3era pantalla así que tocar dos veces el botón de la derecha es mala idea.

4: Si habiendo X colores definidos (por ejemplo 3) se define uno salteando intermedios (por ejemplo habiendo 3, se define el 5), entonces al producirse los dibujos los colores intermedios serán negro.
Solución planeada: Se elegirán colores al azar para esos.

5: Aparentemente, si mientras se generan los dibujos señalas un botón de colores preestablecidos y quitas el mouse antes de que el proceso termine, el botón quedará parpadeando. Es un efecto que debería ocurrir sólo mientras el mouse apunta al botón, pero como el programa estaba haciendo otras cosas no notó que el mouse se fue de ahí, supongo. En PC rápidas posiblemente no ocurra por poca cosa, tendrían que aumentar la cantidad de dibujos y cuadraditos, tal vez.

6: Puede que se vean pequeñas líneas entre los cuadraditos, como si no ocuparan todo el espacio que deben. Un problema del largo y ancho supongo, que es calculado, si el resultado es en decimales ya saben que pueden pasar ese tipo de cosas.

7: Si bajas la cantidad de cuadraditos por fila, la mínima cantidad de colores requeridos debe bajar, porque si por ejemplo es 3 pero sólo hay 2 cuadraditos pintables (el resto son simétricos), entonces podrá haber 3 colores en el dibujo. Eso se corrige pero la corrección hace que a partir de ahí el último color definido se elimine, o se deje de usar, aunque en el la pantalla se vea que está definido.

8: Si agregas un color, luego aumentas la cantidad de mínimos requeridos, y luego bajas la cantidad de cuadraditos por fila, el programa se tranca por lo que expliqué en el punto anterior. No sé por qué no lo corrige en este caso.

Estoy corrigiendo, me toma tiempo...
8  Media / Diseño Gráfico / Re: Reducir tamaño de la hoja, no de la imagen. en: 14 Enero 2025, 20:41 pm
Sirvió, tema resuelto.


Songoku, te muestro.

Luego de tomar una foto que quería, quedó así:

La podría tomar de otro modo pero ya había tomado 4 así, además no creí que fuese un problema.

A las 4 las moví hacia arriba (con flechas) para que desapareciera el menú de arriba y quedara justito donde empieza el cuadro donde está la imagen, una cosa blanca y gris que se ve poco:


Ahora tenía que quitar todo lo de abajo, de modo que la imagen termine justito donde termina el cuadro que te comenté, así (esta es otra foto pero sirve para que se entienda):


Usando el mouse, no es fácil. Te pasás un pixel para un lado u otro, yo al menos sí, por más que ponga zoom. Poner un número como se mostró, es más fácil.

EdePC, al intentar eso me pone esto:

Pero tengo 160 GB libres, no sé. ¿Falta de ram?

Pero al intentar descargarla me descarga una página dice, no me dice que es un gif, me dice Chrome HTML document.

Vivo en Uruguay.
9  Media / Diseño Gráfico / Re: Reducir tamaño de la hoja, no de la imagen. en: 14 Enero 2025, 15:47 pm
Songoku, cuando intento ver tu imagen en una nueva pesataña, el link se cambia y no se muestra la imagen.
Cuando intento descargarla, me aparece descargar una página, no una imagen.
Y bueno, reduje el zoom del foro para poder verla toda pero queda muy chica, puedo hacer algunas artimañas pero no debería ser necesario, no sé qué pasa.
Por lo que vi, eso que haces no es muy diferente a lo que se puede hacer en Paint, yo necesito que quede en un tamaño que le especifique pegando un número, no que dependa de mi puntería con el mouse  :xD

EdePC, lo de selección a medida me podría servir, lo pruebo.
10  Programación / Python / Ayuda para poner prints en código que no entiendo bien. en: 14 Enero 2025, 15:32 pm
El programa genera las combinaciones de 2 letras.

Carga un diccionario en inglés y otro en español.

Anota las combinaciones de 2 letras que hay en las palabras.

Luego anota las combinaciones de 2 letras que ocurren cuando 2 palabras se unen. Así por ejemplo se obtiene zh, por nariz y hoy.

Finalmente, muestra las combinaciones que no ocurrieron, lo hace quitando de la 1er lista (la del inicio) las que anotó.

Eso si funciona bien, no sé.

Lo que quiero es que cuando anote una combinación, me diga cual anotó. Así me entero de cómo se forma qq por ejemplo.

Código
  1. import itertools
  2.  
  3. def cargar_diccionario(ruta):
  4.    """Carga el diccionario desde un archivo .txt y devuelve un conjunto de palabras en minúsculas."""
  5.    with open(ruta, 'r', encoding='utf-8') as archivo:
  6.        return set(palabra.strip().lower() for palabra in archivo)
  7.  
  8. def generar_combinaciones(alfabeto):
  9.    """Genera todas las combinaciones posibles de dos letras del alfabeto."""
  10.    return {a + b for a, b in itertools.product(alfabeto, repeat=2)}
  11.  
  12. def buscar_combinaciones(diccionario, combinaciones):
  13.    """Busca combinaciones dentro de las palabras del diccionario."""
  14.    presentes = set()
  15.  
  16.    # Buscar combinaciones dentro de palabras individuales
  17.    for palabra in diccionario:
  18.        for i in range(len(palabra) - 1):
  19.            presentes.add(palabra[i:i+2])
  20.  
  21.    # Buscar combinaciones entre palabras consecutivas
  22.    lista_palabras = sorted(diccionario)  # Ordenar las palabras
  23.    for i in range(len(lista_palabras) - 1):
  24.        ultima_letra = lista_palabras[-1]
  25.        primera_letra = lista_palabras[i + 1][0]
  26.        presentes.add(ultima_letra + primera_letra)
  27.  
  28.    return combinaciones - presentes
  29.  
  30. # Paso 1: Cargar diccionarios
  31. diccionario_es = cargar_diccionario('diccionario_es.txt')
  32. diccionario_en = cargar_diccionario('diccionario_en.txt')
  33.  
  34. # Paso 2: Generar combinaciones posibles
  35. alfabeto_es = 'abcdefghijklmnñopqrstuvwxyz'
  36. alfabeto_en = 'abcdefghijklmnopqrstuvwxyz'
  37. combinaciones_es = generar_combinaciones(alfabeto_es)
  38. combinaciones_en = generar_combinaciones(alfabeto_en)
  39.  
  40. # Paso 3: Buscar combinaciones inexistentes en cada diccionario
  41. inexistentes_es = buscar_combinaciones(diccionario_es, combinaciones_es)
  42. inexistentes_en = buscar_combinaciones(diccionario_en, combinaciones_en)
  43.  
  44. # Paso 4: Combinar resultados y mostrar combinaciones inexistentes en ambos idiomas
  45. inexistentes_totales = inexistentes_es.intersection(inexistentes_en)
  46.  
  47. print(f"Combinaciones inexistentes en ambos idiomas ({len(inexistentes_totales)}):")
  48. print(sorted(inexistentes_totales))
  49. input("Presione Enter para continuar ...")
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 229
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines