Posts tagged: software

Acire.- Busca, utiliza y comparte código programado en python

¿Interesado en aprender a programar interfaces gráficas en python pero eres muy flojo para empezar desde cero? ¿Tal vez tienes varios fragmentos de código que te gustaría compartir pero no sabes donde? ¡Acire es tu solución!

Acire es como una pequeña biblioteca donde encontraras distintos trozos de código (mejor conocidos como snippets) con los que programar será aún más sencillo, además se ira actualizando con la con las aportaciones de todo el que desee cooperar (si pueden cooperen).

Yo actualmente ya lo tengo instalado, he jugado un poco con el (aún no tanto como quisiera :/) y puedo decirles que me parece una excelente utilidad.

A la izquierda la pantalla de selección de código, a la derecha el ejemplo generado, al centro el logo :P

Más detalles en

Acire 0.3 Released | jonobacon@home (Aquí encontrarán la información de instalación tanto de Acire como de los snippets de python)

Post's relacionados...

Un FTP En Python

Hace algún tiempo procrastinaba leyendo sobre python y me encontré con la sorpresa de que poseía una librería para FTP así que decidí probar, el código resultante fue asombrosamente pequeño por lo que el día de hoy decido compartirlo con ustedes

#!/usr/bin/python
import sys
import os.path
import re
from ftplib import FTP

if(len(sys.argv) > 1):
   host="dominio"
   user="usuario"
   password="password"
   ftp = FTP(host,user,password)
   print ftp.getwelcome()
   print "\nLos siguientes Archivos se encuentran en el servidor…\n"
   ftp.cwd("files")
   ftp.retrlines(‘LIST’)
   argumento=0
   print "Subiendo Archivos…\n"
   for un_archivo in sys.argv:
      if (argumento>0):
         name=os.path.basename(un_archivo)
         archivo=open(un_archivo,"rb")
         print " > Subiendo "+un_archivo
         ftp.storbinary(‘STOR ‘+name,archivo)
         print " * Archivo "+un_archivo+" subido correctamente"
      argumento=argumento+1
   print "\n"
   print "Envio exitoso\nLos siguientes archivos se encuentran ahora disponibles…\n"
   ftp.retrlines(‘LIST’)
   ftp.quit()
else:
   print "falta especificar un archivo"

Obviamente este programa solo funciona para subir archivos (tal como esta escrito arriba) pero con un poco de ingenio puede sernos de mucha utilidad para por ejemplo subir múltiples archivos con solo arrastrar y soltar sobre un lanzador (eso en el caso de gnome, si estamos en windows ponemos usar un archivo .bat)

Espero les sea de utilidad.

PD.- Antes de que los puristas me agredan con comentarios como “pero donde esta la seguridad al dejar el usuario y contraseña al descubierto” les recuerdo que lo programe en un rato de ocio, el que tenga el tiempo y las ganas de encriptar los datos que lo haga :P

Post's relacionados...

Control de versiones con filehamster

Como programador siempre he tenido la necesidad de guardar diferentes versiones de un mismo código (ya saben por aquello de que si la cago pueda deshacerlo sin problemas :P ) el problema es que dada la naturaleza del sistema en el cual actualmente trabajo (sistema privativo del cual no soy dueño) es muy complicado usar un sistema de control de versiones habitual (SVN o CVS están descartados) por lo cual me era necesario llevar a cabo mi “control” de manera manual.

Sin embargo cualquiera que haya tratado de llevar un “control” similar de forma manual sabrá que es MUY complicado así que buscando me encontré con un programa que lleva a cabo dicha tarea de manera muy eficaz, se trata de FileHamster.

Básicamente es un programa de backups, con la diferencia que lo hace interesante (al menos para mis necesidades) es el hecho de que puede hacer revisiones en tiempo real, de manera tal que podemos tener un sistema de versiones bastante completo, yo por ejemplo lo tengo configurado para que me haga un respaldo cada 5 minutos y automáticamente guarda adicionalmente todas las versiones del día actual (cada 5 min. en este caso), así como la ultima version de cada día, semana, mes y año respectivamente (que es la configuración default).

Permite realizar filtros para definir lo que respaldara e ignorara ademas de que cuenta con diferentes plugins para mejorar sus características (estos últimos son de pago).

En fin, es una utilidad a considerar si les es necesario contar con diferentes versiones de un(os) documento(s).

Post's relacionados...

Una macro para hipervinculos

Siempre he creído que una de las características natas de mi persona por la cual siempre termino aprendiendo habilidades inusuales es mi pereza, la falta de ganas de hacer una tarea repetitiva una y otra vez y es que por que hacer una tarea miles de veces si puedes hacer una actividad UNA solo vez y ya (aunque sea más difícil). Esto ha provocado que constantemente busque como realizar diferentes tareas de la manera más simple posible y al mismo tiempo (después de verme) muchos de mis amigos me consulten sobre como realizar diferentes tareas (algunas que la verdad jamas hubiera imaginado siquiera).

Justo hace unos días uno de mis amigos me pidió ayuda para obtener las direcciones de correo de una tabla de excel, no es que sea tonto ni nada similar, sino que los correos electrónicos venían en celdas con hipervinculos, es decir la celda traía un hipervinculo de correo electrónico pero no la dirección, se podría cambiar “fácilmente” dando clic derecho sobre la celda y después modificar hipervinculo sin embargo el numero de registros era enorme y seria muuuy tardado, por lo cual se me ocurrió realizar una pequeña macro que nos ahorrara mucha chamba (insisto, soy huevon).

Nunca antes me había visto en la necesidad de crear una macro pero ya que a fin de cuentas están basada en visual basic no pensé que fuera tan difícil y la verdad no lo fue, de hecho lo único tardado fue encontrar los métodos adecuados para realizar esta tarea (que esperaban es la primera vez que hago una).

La macro resultante es la siguiente:

Sub Macro()
Dim celda As String
Dim link As String
Dim n As Integer
For n = 1 To 1168' bucle que hara lo mismo desde la celda E1 hasta la celda E1168
    celda = "E" & n
    Range(celda).Select
    If ActiveCell.Hyperlinks.Count > 0 Then' nos aseguramos de que tenga hipervinculo
       Selection.Hyperlinks(1).TextToDisplay = Selection.Hyperlinks(1).Address' si tiene hipervinculo lo mostramos
    End If
Next
End Sub

No tengo idea de si esta macro puede servirle a alguien pero de cualquier manera quería compartirla, seguramente habrá una manera más fácil de hacerlo pero insisto es mi primera vez, así que no sean muy rudos :P

Actualización 16-01-2009: Carla preguntaba como hacer un indice para las hojas de excel, pues bien, después de buscar un poco me encontré con la solución, básicamente es necesario crear un nuevo modulo en el libro de excel y escribir:

Sub Links_hojas()
   Dim wrbLibro As Workbook
   Dim wrsHojaActiva As Worksheet, wsHoja As Worksheet
   Dim intFila, intColumna As Integer
   Set wrbLibro = ActiveWorkbook
   Set wrsHojaActiva = ActiveSheet
   'en que fila/columna empezar la lista
   intFila = 4
   intColumna = 1
   'el bucle repasa todas las hojas
   For Each wsHoja In wrbLibro.Worksheets
      'para excluir hoja de los links
      If wsHoja.Name = "Hoja4" Then GoTo ProxHoja
      'crear links
      If wsHoja.Name <> wrsHojaActiva.Name Then
         'Nota: las siguientes 3 lineas escribanlas en una
         wrsHojaActiva.HyperLinks.Add wrsHojaActiva.Cells(intFila, intColumna),
         "", SubAddress:="'" & wsHoja.Name & "'!A1",
         TextToDisplay:=wsHoja.Name
         intFila = intFila + 1
      End If
      ProxHoja:
   Next wsHoja
End Sub

El articulo original esta disponible en xltoday.net lugar en el cual encontraran muchos otros ejemplos de macros ;-)

Post's relacionados...