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 2 3 4 5 6 [7] 8 9 10 11
61  Programación / Scripting / Re: [Duda] ¿Algún curso/manual de Perl? en: 27 Junio 2015, 23:21 pm
Además de lo anterior, decir que en el foro de perlenespanol.com hay un subforo de Formación. Dentro de él hay un tema fijo llamado Aprender Perl, con enlaces a más recursos.

En vídeo, también hay un tutorial, pero no hay que olvidarse de leer el hilo, porque tiene algunas fallas.

Y, por supuesto, el foro está abierto para cualquier consulta.
62  Programación / Scripting / Re: [Perl] Error al enviar Mail en: 27 Junio 2015, 23:15 pm
Puedes arrancar el Synaptic y buscar por el paquete libmail-sendmail-perl

O desde la línea de comandos, siendo root, ejecutar

apt-get install libmail-sendmail-perl
63  Programación / Scripting / Re: encotrar numero en pagina mechanize regular expresion en: 20 Junio 2015, 23:32 pm
Sí que se pueden usar exp. reg. para buscar lo que quieres. Te pongo un ejemplo escrito en Perl, ya que en Python no sé cómo se pueden usar las exp. reg. extendidas:
Código
  1. #!/usr/bin/perl
  2. $html = <<'HTML';
  3. <html>
  4. <head>
  5. </head>
  6. <body>
  7. <p>Un párrafo con número: 42</p>
  8. </body>
  9. </html>
  10. HTML
  11.  
  12. $html =~ /(\d+)(?(?{ $^N >= 25 and $^N <= 50 })(?{print "sí\n"})|(?{print "no\n"}))/;
Como ves, el truco consiste en capturar una cifra, y compararla con los límites que queremos, y el resultado imprimirlo inmediatamente.

Escrito de forma más clara:
Código
  1. #!/usr/bin/perl  
  2. $html = <<'HTML';
  3. <html>
  4. <head>
  5. </head>
  6. <body>
  7. <p>Un párrafo con número: 42</p>
  8. </body>
  9. </html>
  10. HTML
  11.  
  12. $html =~
  13.        /
  14.        (\d+)                                           # capturar números
  15.        (?(?{
  16.                        $^N >= 25 and $^N <= 50         # ¿está dentro de los límites?
  17.                })
  18.                (?{
  19.                        print "sí\n"                    # sí
  20.                })
  21.                |  
  22.                (?{
  23.                        print "no\n"                    # no
  24.                })
  25.        )  
  26.        /x;
64  Programación / Scripting / Re: ayuda con python urgente!! en: 20 Junio 2015, 23:05 pm
No necesitas un doble bucle. Con uno te vale, ya que el índice que recorre las filas es el mismo que las columnas (con eso, accedemos a la diagonal).

Código
  1. if mat[i][i] == 0:

65  Programación / Scripting / Re: Alguien con experiencia que me pueda guiar o dar tips en: 13 Junio 2015, 15:21 pm
Es mejor que no uses extensiones conocidas, aunque el formato sea el mismo. Solo con esa ya hay mucha gente que ni se molesta en averiguar qué es lo que hay dentro.

Un ejemplo que he visto en una aplicación así: los archivos extra (como tus MOD) subían con extensión .zipx , y realmente era un zip comprimido con una contraseña, pero, además, estaba invertido (el primer byte del archivo era el último, el segundo, el penúltimo, etc.).

Hay más trucos, como hacerle un XOR a todos los bytes, sumar un valor fijo a cada grupo de bytes, etc., etc. Hay muchos métodos para esconder la información.

Lo malo es... si hacen ingeniería inversa de tu programa y averiguan el procedimiento que usas.

En cuanto a la forma de hacerlo, pues puedes usar el mismo lenguaje en que desarrollas los MOD, pero depende de si puedes integrar el procedimiento de comprensión.

Ejemplo: tuvimos un caso en que era necesario enviar informes a los clientes. Ese informe iba comprimido, ya que era texto y tenía que ser muy rápido. Pero en el lado del cliente no podíamos instalar la biblioteca de descomprensión. La solución fue comprimir los archivos con un sencillo método RLE personalizado para comprimir palabras, no bytes. Y el procedimiento para descomprimir en el lado del cliente fue igual de simple.
66  Programación / Programación General / Este año, la YAPC::EU 2015, en Granada (la de España) en: 4 Junio 2015, 15:41 pm
Buenas.

Solo unas líneas para contaros que este año se celebrará la próxima YAPC::EU en Granada. Será la primera vez que este evento europeo se celebre en España.

Ya está abierta la inscripción.

En estos momentos ya son más de 200 los registrados, de 33 países y 59 grupos de usuarios, de los cuales más de 100 son los confirmados.

De momento, más de 50 charlas aprobadas.

Mod: Links corregidos.
67  Programación / Scripting / Perl v5.22 en: 1 Junio 2015, 22:54 pm
Perl 5.22.0 representa, aproximadamente, 12 meses de desarrollo desde Perl 5.20.0 y contiene aproximadamente 590 000 líneas de cambios a lo largo de 2400 archivos por parte de 94 autores.

Nuevas características
  • Perl sabe qué métodos se han definido en una clase, y puede llamarlos más rápido
  • Crea alias a partir de referencias en ambos lados de una asignación o en una variable de control
  • Existen nuevos operadores de bit, para diferenciar los casos de números y cadenas de caracteres
  • El operador de entrada de líneas, el diamante doble, <<>>, reduce los casos mágicos cuando gestionamos ARGV (archivos abiertos de forma implícita desde la línea de comandos)
  • La forma de open() entubado ahora funciona en Windows
  • Valores de punto flotante en hexadecimal. (Pero, ¿qué demonios es esto?)
  • close() ahora pone sus errores en $! y saca una advertencia cuando falla de forma implícita
Mejoras en la expresiones regulares
  • Márgenes \b especiales en exp. reg., incluyendo agrupaciones de grafemas, márgenes de palabras en Unicode, y márgenes en sentencias
  • La nueva opción /n (no captura) en exp. reg. convierte a todos los grupos de paréntesis como de no captura
  • El módulo re ahora tiene un modo estricto
  • Solo puede usar un /x, porque /xx significará otra cosa, en el futuro

Y soporte de Unicode 7.0.

El módulo CGI se ha quitado. Si se desea, se puede instalar desde CPAN, pero lo recomendado hoy en día es usar otras tecnologías.

Plataformas que vuelven a funcionar: IRIX y Tru64. z/OS ejecutando el código de página 1047 de EBCDIC.

Plataformas obsoletas: NeXTSTEP/OPENSTEP
68  Programación / Scripting / Re: como procesar archivos en linux en: 23 Abril 2015, 04:50 am
¿Puedes publicar un ejemplo, unas pocas líneas, de cómo son los archivos de entrada?

Falsea los datos sensibles, como los de las MAC. Solo nos interesa el formato del archivo.
69  Programación / Scripting / Re: como procesar archivos en linux en: 21 Abril 2015, 18:36 pm
Si pones un ejemplo pequeño de lo que quieres hacer, te damos la solución  ;)
70  Programación / Scripting / Re: duda ejercicio combinatoria en: 19 Abril 2015, 21:45 pm
¡Ah!, entiendo: hay una limitación en el número de escalones que se pueden subir, de hasta 3.

Claro... muy poca gente podría dar un salto de muchos escalones para subir  :laugh:

Entonces, mis soluciones no sirven.

Pero... con dos pequeños cambios, ya vuelve a funcionar   ;D
Código
  1. #!/usr/bin/perl
  2. my $escalones = 0 + shift;                                      # leemos el número de escalones
  3.  
  4. if ($escalones > 0) {                                           # si es un número positivo
  5.    my @combinaciones = descompon($escalones);                  # sacamos todas las @combinaciones
  6.    print "Hay ", scalar(@combinaciones), " combinaciones:\n";  # informamos del número de @combinaciones
  7.    print join('; ' => @combinaciones), "\n";                   # y las propias combinaciones
  8. }
  9.  
  10. sub descompon {                                                 # devuelve una lista de combinaciones
  11.    my $escalones = shift;                                      # para un determinado número de $escalones
  12.  
  13.    my @combinaciones;                                          # aquí guardaremos las @combinaciones encontradas
  14.  
  15.    for my $salto ( 1 .. 3 ) {                                  # damos un $salto cada vez mayor
  16.        next if $salto > $escalones;
  17.        my $resto = $escalones - $salto;                        # después del $salto, nos queda un $resto de $escalones
  18.  
  19.        if ( not $resto ) {                                     # si hemos llegado arriba
  20.            push @combinaciones, $salto;                        # guardamos ese $salto como nueva combinación
  21.        }
  22.        else {                                                  # si aún no hemos llegado
  23.            my @resto_combinaciones = descompon($resto);        # vemos todas las combinaciones que quedan para subir
  24.  
  25.            for my $combina_resto ( @resto_combinaciones ) {    
  26.                                                                # y las guardamos
  27.                push @combinaciones, join "," => $salto, $combina_resto;
  28.            }
  29.        }
  30.    }
  31.  
  32.    return @combinaciones;                                      # devolvemos las @combinaciones encontradas
  33. }
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines