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


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 155
131  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Sugerencia para todos los moderadores de Programación. en: 24 Marzo 2014, 06:10 am
apoyo la idea chicos y quizá con un mensaje o pop-up a los nuevos usuarios cuando intenten abrir un thread para preguntar podríamos informarles como deben hacerlo por si no han leído las reglas. Saludos
132  Programación / Python / [Python 2.7.3] Renamer 1.0 en: 24 Marzo 2014, 06:00 am
Hola, quiero compartir un script que hice hace algún tiempo la verdad, se puede mejorar, reprogramar y documentar mejor claro está, lo hice para trabajar con conjuntos de archivos a mi medida, me refiero a cantidades de mas de 3000 archivos en los que me tenía que manejar.

Aviso: Desde entonces he mejorado en varios aspectos, tanto en inglés como en programación, así que perdónenme por la mala sintaxis y como dice ahí con mi inglés de la época, era para uso personal, pero lo tengo tirado sin uso.

Para quien quiera mejorarlo, reprogramarlo...etc, que me deje en los créditos  :xD, ojala le sirva a alguien tanto como para aprender como para alguna otra cosa. Saludos y gracias.

Código
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #file renamer 1.0
  5. #file renamer is script for rename files easy, this vactions proyect continuous
  6. #its development, so that it can be some strange, above all it is written in
  7. #spanish and for english speaking can be difficult of understand, this is
  8. #beacause the vacation proyect was thought for creator's private use.
  9.  
  10. #modulos
  11. import os
  12. from sys import exit
  13. from time import sleep
  14.  
  15. #bugs conocidos:
  16. #despues de usar r -s si se usa r -s -i f - palabra da error como si los
  17. #tuvieran el mismo nombre, verificar y arreglar!
  18.  
  19. #implementar
  20. #creador de vinculo web de publicidad y tal vez una llave tipo key codificada
  21. #para autor
  22.  
  23. #constantes
  24. VERSION = "1.0"
  25. #funciones
  26. def limpiar():
  27.        """Limpia consola"""
  28.        if os.name == "nt":
  29.            os.system("cls")
  30.        else:
  31.            os.system("clear")
  32.  
  33. def cifras(x=0):
  34.    """cifras(x=0)
  35.       retorna la cantidad de digitos que tiene una cifra positiva"""
  36.    i = 0
  37.  
  38.    if x == 0:
  39.        i = 1
  40.    elif x < 0:
  41.        i = -1
  42.    else:
  43.        while x > 0:
  44.            x = x / 10
  45.            i = i + 1
  46.  
  47.    return i
  48.  
  49. #clases
  50. class ListaArchivos():
  51.    """ListaArchivos(directorio)
  52.    Operaciones con archivos"""
  53.    def __init__(self):
  54.        self._listaArchivos = [] #temporal
  55.  
  56.    def __cargar(self, directorio):
  57.        """cargar(self, directorio)
  58.        Carga el directorio, filtra los archivos
  59.        y prepara tareas para renombrado"""
  60.  
  61.        #listado de directorios, archivos y
  62.        #filtrado de carpetas en la lista de archivos, nombre y extension por
  63.        #separado
  64.        self._listaArchivos = [os.path.splitext(archivo) for archivo in
  65.        os.listdir(directorio) if os.path.isfile(archivo)]
  66.  
  67.        return "\n<!> %d archivos cargados" % len(self._listaArchivos)
  68.  
  69.    def renombrar(self, directorio, opcion="-s"):
  70.        retorno =  [self.__cargar(directorio)]
  71.  
  72.        #nombre con el que se renombrara a los archivos
  73.        nuevoNombre = []
  74.  
  75.        #procesado para cada archivo en la lista
  76.        for i, archivo in enumerate(self._listaArchivos, 1):
  77.            #secuencial
  78.            if "-s" in opcion:
  79.                nuevoNombre.append(str(i))
  80.  
  81.            if "-i" in opcion:
  82.                #if separados ahorran espacio y permiten que al usuario poner
  83.                #nombre al inicio y al lo que un if-else o if-elif no dejaria
  84.                if 'i' in opcion:
  85.                    #nombre al inicio
  86.                    nuevoNombre.insert(0, opcion[opcion.index("i") + 1])
  87.                if 'f' in opcion:
  88.                    #nombre al final
  89.                    nuevoNombre.append(opcion[opcion.index("f") + 1])
  90.  
  91.            #agregando extension de archivo
  92.            nuevoNombre.append(archivo[1])
  93.            #renombrando
  94.            try:
  95.                os.rename(''.join(archivo), ''.join(nuevoNombre))
  96.            except os.error:
  97.                print "<!> Error al renombrar archivo %d" % i
  98.            #mensaje
  99.            print "<%d> %s --> %s" % (i, (''.join(archivo)), (''.join(nuevoNombre)))
  100.            #reinicialización de variable
  101.            nuevoNombre = []
  102.            sleep(0.1)
  103.  
  104.        retorno.append("\n<!> %d archivos renombrados" % len(self._listaArchivos))
  105.        return retorno
  106.  
  107.  
  108. class FileRenamer():
  109.    """Clase principal file renamer"""
  110.    def __init__(self):
  111.        self._listaArchivos = ListaArchivos()
  112.  
  113.    def creditos(self):
  114.        """Imprime creditos del autor: Mini_Nauta"""
  115.        print '''
  116.   ||||  |||| || ||||   || ||   ||||   ||    |||    ||  || ||||||||   |||
  117.   ||  ||  || || || ||  || ||   || ||  ||   || ||   ||  ||    ||     || ||
  118.   ||      || || ||  || || ||   ||  || ||  |||||||  ||  ||    ||    |||||||
  119.   ||      || || ||   |||| ||   ||   |||| ||     || ||||||    ||   ||     ||
  120.  
  121.                               \xb8 Mini_Nauta 2012
  122.                                   File Renamer %s
  123.                           http://protohey.blogspot.com\n\n''' % VERSION
  124.  
  125.    def ayuda(self, ayudaRapida=False):
  126.        """Muestra la ayua del programa"""
  127.        if not ayudaRapida:
  128.            print '''
  129.    c cd     Cambia el directorio si es valido. cd <directory>
  130.    h help   Muestra informacion de ayuda.
  131.    r rename Renombra archivos. Vease help para mas info.
  132.    q quit   Cierra el programa.\n'''
  133.        else:
  134.            print '''
  135.    | Comando | Ayuda
  136.    ------------------------------------------------------------------
  137.    | c cd    | Cambia el directorio si es valido. cd <directory>
  138.    |         |  cd.. cambia al directorio anterior.
  139.    |r rename | Renombra archivos. Por defecto -s
  140.    |         |  -s secuencialmente.
  141.    |         |   antiguo.
  142.    |         |  -i i <palabra inicio> f <palabra final> (xxxxxxxx01...)
  143.    |         |
  144.    | h help  | Muestra informacion de ayuda.
  145.    | q quit  | Cierra el programa.
  146.    |   exit  |
  147.  
  148.    Nota: si intenta renombrar con el mismo nombre los archivos, por ejemplo
  149.    aplicando r -s 2 veces recibirá un error para el archivo o cola de ellos.\n'''
  150.  
  151.    def cambiarDirectorio(self, nuevoDirectorio=''):
  152.        """cambiar_directorio(nuevoDirectorio)
  153.        Cambia de directorio"""
  154.  
  155.        #valor de retorno
  156.        retorno = None
  157.  
  158.        #quitando "cd ", se supone en todos los casos opcion == cd, cd.., cd ..
  159.        #por lo que no tienen directorio
  160.        #probando por "cd.."
  161.        if nuevoDirectorio == "cd..":
  162.            nuevoDirectorio = nuevoDirectorio[2:]
  163.        #probando con "cd " sin directorio
  164.        elif nuevoDirectorio == 'cd ':
  165.            nuevoDirectorio = nuevoDirectorio[2:]
  166.        #probando cuando es "cd .."
  167.        elif nuevoDirectorio == "cd ..":
  168.            nuevoDirectorio = nuevoDirectorio[3:]
  169.        #exepción, este viene con directorio
  170.        else:
  171.            nuevoDirectorio = nuevoDirectorio[3:]
  172.  
  173.        #por si se arrastra una carpeta se le quita las " o las '
  174.        if len(nuevoDirectorio) != 0 or 1:
  175.            nuevoDirectorio = ''.join([char for char in nuevoDirectorio
  176.            if char != '"' and char != "'"])
  177.  
  178.        #cambiando de directorio
  179.        try:
  180.            os.chdir(nuevoDirectorio)
  181.        except os.error:
  182.            retorno = "\n<!> Directorio no valido"
  183.  
  184.        return retorno
  185.  
  186.    def opciones(self, nota=None):
  187.        """opciones(error=None)
  188.        Opciones del programa
  189.  
  190.        nota(string): Define una nota de aviso para el usuario"""
  191.        #verificacion de nota
  192.        if nota != None:
  193.            if type(nota) == list:
  194.                for frase in nota:
  195.                    print frase
  196.            else:
  197.                print nota
  198.  
  199.        opcion = (raw_input("\n<->> ")).encode("utf-8")
  200.  
  201.        if len(opcion) == 0:
  202.            nota = "\n<!> No se han ingresado comandos"
  203.        #recordar agregar los ayudas para comandos
  204.        elif opcion == "h" or opcion == "help":
  205.            limpiar()
  206.            self.ayuda(True)
  207.            raw_input()
  208.  
  209.        elif opcion[0] == 'r' or opcion[:5] =="rename":
  210.            if opcion == "rename":
  211.                nota = self._listaArchivos.renombrar(os.getcwd(),
  212.            ((opcion[6:]).split(' '))[1:])
  213.            else:
  214.                nota = self._listaArchivos.renombrar(os.getcwd(),
  215.            ((opcion[1:]).split(' '))[1:])
  216.  
  217.        elif opcion == "cd.." or opcion[0] == 'c' or opcion[:1] == "cd":
  218.            nota = self.cambiarDirectorio(opcion)
  219.  
  220.        elif opcion == 'q' or opcion == "quit" or opcion == "exit":
  221.            limpiar()
  222.            print "\n\n\n\n"
  223.            self.creditos()
  224.            sleep(2)
  225.            exit()
  226.  
  227.        else:
  228.            nota = "\n<!> Comando invalido"
  229.  
  230.        limpiar()
  231.        #este es la nota retornada por cambiarDirectorio
  232.        self.iniciar(nota)
  233.  
  234.    def iniciar(self, nota=None):
  235.        """iniciar(nota=None)
  236.        Inicio de file renamer, similar a main loop
  237.        en otras aplicaciones
  238.  
  239.        nota: parametro que sirve de puente entre opciones y cambiarDirectorio
  240.        pero que es necesario que pase por iniciar."""
  241.        self.creditos()
  242.        self.ayuda()
  243.        print "<-> Directorio actual: \"" + os.getcwd() + '\"'
  244.        #la nota se le pasa a opciones para que lo muestre
  245.        #si es que contiene alguna notificacion para el usuario
  246.        self.opciones(nota)
  247. #main
  248. def main():
  249.    fr = FileRenamer()
  250.    fr.iniciar()
  251.  
  252. if __name__ == '__main__':
  253.    main()
133  Foros Generales / Foro Libre / Re: ¿Les ha pasado esto por cansancio? en: 24 Marzo 2014, 05:50 am
a no pues no, solo cuando duermo poco, pero con 8 horas o 7 horas ando de lo mas bn. Saludos
134  Foros Generales / Foro Libre / Re: Aprender chino en: 22 Marzo 2014, 03:31 am
Bueno la verdad yo en su tiempo intente aprender japonés y lo deje por falta de tiempo, menuda tarea memorizar los canjis y letras, pero con práctica al igual que aprender programación te va quedando todo en la memoria, no obstante de a poco escuchando el idioma por ejemplo en películas y animes aprendes algo mas.

También lo intenté con el ruso pero no me atrajo mucho la idea de hablarlo, por lo que me quedo con el inglés, español y japonés (mi novia habla algo de chino, y claro, algún día la sorprenderé con tanguchi o lo que sea que signifique xd).

También como dicen ayuda bastante hablar con personas hablantes nativas, en mi caso con americanas e inglesas (lo se digo mujeres, nuca he tomado con un profesor hombre en el instituto  :silbar:), escuchar musica tambien ayuda, pero debes concentrarte un tanto y acostumbrarte a entender, no a escuchar, y claro, te das cuenta que sabes cuando estás ebrio hablando otro idioma con una guapa extranjera...  :silbar:...

Dato interesante: Se sabe que los niños japoneses primero aprenden uno de sus 2 alfabetos (el mas fácil), luego a medida que crecen les enseñan el otro (son 2) y de apoco en su juventud aprenden a incluir carácteres y canjis importados, ahora con esto del internet en cuidades mas globalizadas ocurre más rápido.
Pero se dice que un extranjero tarde cerca de 8 años aun cuando vive allá en tan solo lograr leer un periódico a cabalidad y existen mas de 1000 simbolos entre canjis propios e importados (corrijanme si me equivoco).

Saludos

edit: se me olvidaba, también me interesa aprender, por si alguien quiere hacer un grupo o algo, cualquier duda me consultan por skype os lo paso por mp. Saludos
135  Foros Generales / Foro Libre / Re: ¿Les ha pasado esto por cansancio? en: 22 Marzo 2014, 03:21 am
valla eso no lo sabía, es interesante la verdad la complejidad y el sistema de control de errores del cerebro desde un punto de vista de ingeniería.

Por otra parte no tenía pensado ir a algún especialista, y otra cosa que he notado, es curioso porque me ha pasado a veces que cuando me duermo a ratos y escucho conversaciones o sueño con recuerdos y por ejemplo tengo un vaso en la mano, despierto e intento agarrar el vaso y pues claro, la gente que va chaval y te queda mirando jajaja... en fin.
Saludos y gracias por las respuestas
136  Foros Generales / Foro Libre / ¿Les ha pasado esto por cansancio? en: 19 Marzo 2014, 23:11 pm
Hola, pues verán, no se si será el cansancio o el estrés de que el otro día me asaltaron, pero hoy me ha pasado algo muy curioso, al menos para mi.

Estaba yo esperando en la estación de tren, y cabeceaba a cada rato porque esperé desde el 25 al número 91, unas 2 horas en que me dormía a ratos, luego me puse mi cabeza sobre mis brazos apoyados en mis piernas mientras miraba mi reloj, me paso 2 veces que miraba mi reloj, este se detenía un buen rato y yo cuando me daba cuenta todo volvía a la normalidad, era como ponerle pausa al vídeo. Supongo yo que es por cansancio.
También me ha pasado que escucho como que me hablan dormido, bueno, eso por toda la gente a mi alrededor xd pero en fin... a alguien mas le ha pasado?
137  Seguridad Informática / Hacking Wireless / Re: ¿Alguna forma de ocultarse ante el router? en: 4 Marzo 2014, 07:20 am
en estos momentos estoy preparando una trampilla para entretenerme un rato con los tios que querían wifi gratis jejej, me muero por saber quienes son  ;D... Saludos
138  Foros Generales / Foro Libre / Re: ¿Qué es lo más interesante que han encontrado en la Deep Web? en: 3 Marzo 2014, 17:42 pm
pues yo encontré foro como este que se usaba sin registro y un tipo preguntando por pedofilia, luego entre a foro de hackers como este, donde enseñaban a hacer tu web en la deep web, libros, paginas con experimientos bla bla bla y mas bla, es mas entretenido youtube que la deep web creo xd... saludos
139  Seguridad Informática / Hacking Wireless / Re: ¿Alguna forma de ocultarse ante el router? en: 2 Marzo 2014, 07:36 am
bueno, es un poco complicado, hay un numero limitado de macs, 8 en realidad, 4 de ellas están asociadas a direcciones ip internas estáticas las que tienen el 95% del ancho de banda (el 5% restante de reserva por si alguien lo ocupa a full), luego están las macs restantes que tienen el 40% de ancho de banda correspondiente a smartphones, tablets, y otros dispositivos móviles. Saludos
140  Seguridad Informática / Hacking Wireless / Re: ¿Alguna forma de ocultarse ante el router? en: 27 Febrero 2014, 19:40 pm
hola chicos gracias por todos los comentarios, bien les cuento como ha ido todo.

Ante ayer tuvimos otra vez problemas mas menos, entre las 10 pm y las 12 am,  mas que eso en el día funciona bn, pero aquella vez fue un asco, la verdad nisiquiera podíamos entrar al router mediante wifi con mi vecino, ya que compartimos la internet entre 2 casas, y dado que siempre jugamos, usamos de todo por habido y por haber para conectarnos de casa a casa mediante lan y así dejarle la internet a nuestras familias para ver películas, etc.

Bueno la cosa es que el cambio que implementamos fue pasar de automatic wpa/wpa2 psk a wpa2 aes, revisamos algunas configuraciones, cambiamos de lugar el router, chequeamos el filtrado mac, aumentamos la seguridad en la contraseña y ocultamos el nombre, suponemos que cierta persona que se dedica a atacarnos la wifi nos tiene en alcance aun a mínima potencia, y dado que necesitamos cubrir a las 2 casas no podemos bajarle a la wifi. La verdad fuera de ese pequeño incidente todo ha andado  muy bien, hemos pasado de en un principio por falta de control al router de tener intrusos a tener un red segura si se podria decir de alguna forma.

Lo otro de cambiar la clave semanalmente se podría decir es algo mas de precaución, además permite una sensación de seguridad para las 2 familias aunque no sea así.

Bueno eso sería chicos, gracias por la ayuda. Saludos
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 155
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines