Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

¿Me recomendás un libro para leer?

Me gustaría recibir recomendaciones de libros para leer.

Hace unos días que en realidad fueron semanas abandoné Los miserables de Victor Hugo, me resultó muy pesado y no pude continuar leyendo la historia. Pero no me gusta estar sin nada sobre la mesita de luz, por lo que me propongo encontrar un buen libro para que sea el siguiente.

En la sección Cosas que leo, de este blog, podés darte una idea del tipo de lectura que me gustó. Así mismo, sé algunas cosas que creo tiene que tener el próximo libro que lea:

    <li>puede ser una novela, pero no es necesariamente una novela.</li>
    
    <li>me gustaría aprender algo de él y no especificamente algo técnico.</li>
    
    <li>los capítulos no tienen que ser muy largos.</li>
    
    <li>preferiría un autor latinoamericano o español contemporáneo.</li>
    
    <li>me gustaría conseguir una edición por menos de $50.</li>
    

    Ojo! lo anterior es solo una guía, espero recomendaciones que no encajen en la lista de items. Si pensás en uno que puede gustarme, no dejes de comentarlo.

    Muchas personas pasan a diario por este blog, pero pocos se animan a comentar una entrada. Si leíste hasta acá te agradezco mucho que me dejes una recomendación.

    Gracias,

    PS: el viernes me decido por uno y lo compro en la librería.


    Un fin de semana en UPG

    Unidad de Producción Guadalupe es el nombre del pequeño campo que tiene mi familia en Carlos Pellegrini. Allí, además de la producción tradicional de la zona, tenemos algunos elementos no tan comunes; principalmente una huerta grande y distintos animales de granja. Hace unos fines de semanas estuvimos comiendo un asado con motivo del regreso de mi hermana de Brasil acompañados por la familia amiga Los Perotti (aproveché la ocasión para sacar algunas fotos), también estuvimos ahí el 25 de diciembre con mi primos y tíos, y muchos otros fines de semana. En la siguiente galería intercalo estas fotos con otras tomadas en los últimos meses para presentarles el lugar.

    [gallery]

    El título original del post quedó corto; terminé incluyendo fotos de muchos fines de semana!


    Código re-editable

    "Debo confesar un fuerte prejuicio en contra de la moda del código reusable. Para mí, "el código re-editable" es mucho, mucho mejor que una caja negra intocable."

    -- Donald E. Knuth

    Donald Ervin Knuth, es uno de los más reconocidos expertos en ciencias de la computación por su seminal investigación dentro del análisis de algoritmos y compiladores. Es Profesor Emérito de la Universidad de Stanford.

    Se le conoce principalmente por ser el autor de la obra The art of computer programming (El arte de programar computadoras), una de las más respetadas referencias en el campo de las ciencias de la computación. Sentó las bases de y dio nombre al análisis de algoritmos y ha realizado numerosos aportes a varias ramas teóricas de la informática. Es el creador de TEX, del sistema de diseño de tipos METAFONT y del estilo de programación conocido como programación literaria (Literate programming).

    Fuente: Wikipedia

    Página web del autor: http://www-cs-faculty.stanford.edu/~knuth/

    Este post es parte de Citas sobre programación.


    Aprender a programar

    "La formación en informática no puede convertir a nadie en experto programador, de la misma forma que estudiar pinceles y pigmentos puede hacer a alguien un experto pintor"

    -- Eric S. Raymond

    Lo que se necesita es practicar, practicar y practicar. Juntar horas de vuelo. Malcolm Gladwell publicó hace poco un libro en el que expone (junto con muchos otros ejemplos de otros ámbitos) que genios como Bill Gates y Bill Joy lograron sus éxitos como programadores gracias a las miles de horas que le dedicaron a esta actividad durante sus años en la universidad.

    Eric Steven Raymond, también conocido como ESR, es el autor de The Catedral and the Bazar (La Catedral y el Bazar) y el responsable actual del Jargon File (The New Hacker's Dictionary). Si bien con el Jargon File obtuvo fama como historiador de la cultura hacker, se convirtió después de 1997 en una figura líder en el Movimiento del Open Source y el Código abierto. Hoy día es uno de sus personajes más famosos y controvertidos.

    Fue el coordinador del cliente de correo electrónico Fetchmail. También colaboró con los modos de edición de Emacs y coescribió porciones de la biblioteca GNU ncurses.

    Fuente: Wikipedia

    Página web del autor: http://catb.org/~esr/

    Este post es parte de Citas sobre programación.


    Colores personalizados en OpenOffice

    Al seleccionar un color en OpenOffice se nos desplega una paleta con un conjunto limitado de colores, pero a primera vista no es fácil encontrar una opción "Personalizar" que nos deje elegir el color exacto que queremos. La forme hacer esto es agregar primero el nuevo color a la palate de colores.

    Para hacerlo hay que entrar en Herramientas/Opciones...

    Una vez allí seleccionar la opción Colores, definir un nuevo nombre para el nuevo color y definirlo (mediante sus valores de RGB u otra forma).



    Listas por comprensión en Python

    Las listas por comprensión o list comprehension es una característica muy práctica de Python (también incluida en otros lenguajes de programación). Es una herramiente de mucha utilidad y fácil de usar, muchas veces desconocida por quienes vienen de lenguajes como PHP o Java.

    Este artículo tiene como objetivo explorar su uso y plantear ejemplos para que los nuevos usuarios puedan incorporarlas rápidamente a su cajita de herramientas.

    Cómo lo indica el PEP 202, es una construcción sintáctica que permite crear listas en situaciones en las que se usaría map, filter o for anidados; pero de forma mas concisa.

    map

    Al llamar a la función map con argumentos f y l ,dónde f es una función y l una lista, retorna una lista con los resultados de aplicar f a cada elemento de l.

    En el primer ejemplo usamos la función len, que dado un string retorna su longitud:

    
    >>> len('hola')
    
    4
    
    

    Esto es lo que sucede al aplicar map a todos los elementos de una lista de palabras:

    
    >>> palabras = ['uno', 'dos', 'Santa Fe', 'Python', '...', 'Soleado']
    
    >>> map(len, palabras)
    
    [3, 3, 8, 6, 3, 7]
    
    

    La versión equivalente es:

    
    >>> [len(p) for p in palabras]
    
    [3, 3, 8, 6, 3, 7]
    
    

    La sintaxis de la listas por comprensión es más flexible. Si queremos la lista de palabras, pero en mayúsculas hacemos:

    
    >>> [p.upper() for p in palabras]
    
    ['UNO', 'DOS', 'SANTA FE', 'PYTHON', '...', 'SOLEADO']
    
    

    Para hacer lo anterior utilizando la función map, antes tendríamos que definir una función que llame al método upper de la clase string:

    
    >>> def upper(s):
    
        return s.upper()
    
    >>> map(upper, palabras)
    
    ['UNO', 'DOS', 'SANTA FE', 'PYTHON', '...', 'SOLEADO']
    
    

    filter

    La función filter recibe como argumento una función f y una lista l. Al igual que map, aplica f a todos los elementos de l pero retorna una lista con los elementos de l para los cuales la función f retornó True o un objeto con valor de verdad True.

    
    >>> def incluye_n(s):
    
        return 'N' in s.upper()
    
    >>> incluye_n('Python')
    
    True
    
    >>> incluye_n('Soleado')
    
    False
    
    >>> filter(incluye_n, palabras)
    
    ['uno', 'Santa Fe', 'Python']
    
    

    La forma de hacer lo anterior con listas por comprensión es:

    
    >>> [p for p in palabras if incluye_n(p)]
    
    ['uno', 'Santa Fe', 'Python']
    
    

    Incluso muchas veces podemos hacerlo sin necesitar de definir una función auxiliar:

    
    >>> [p for p in palabras if 'N' in p.upper()]
    
    ['uno', 'Santa Fe', 'Python']
    
    

    for

    También podemos anidar fors de forma similar a cómo lo haríamos en:

    
    >>> range(6)
    
    [0, 1, 2, 3, 4, 5]
    
    >>> for n in range(6):
    
    for p in palabras:
    
        if len(p) == n:
    
            print p,n
    
    uno 3
    
    dos 3
    
    ... 3
    
    

    Pero con una sintaxis más cómoda:

    
    >>> [(p,n) for n in range(6) for p in palabras]
    
    [('uno', 0), ('dos', 0), ('Santa Fe', 0), ('Python', 0), ('...', 0), ('Soleado', 0), ('uno', 1), ('dos', 1), ('Santa Fe', 1), ('Python', 1), ('...', 1), ('Soleado', 1), ('uno', 2), ('dos', 2), ('Santa Fe', 2), ('Python', 2), ('...', 2), ('Soleado', 2), ('uno', 3), ('dos', 3), ('Santa Fe', 3), ('Python', 3), ('...', 3), ('Soleado', 3), ('uno', 4), ('dos', 4), ('Santa Fe', 4), ('Python', 4), ('...', 4), ('Soleado', 4), ('uno', 5), ('dos', 5), ('Santa Fe', 5), ('Python', 5), ('...', 5), ('Soleado', 5)]
    
    >>> [(p,n) for n in range(6) for p in palabras if len(p) == n]
    
    [('uno', 3), ('dos', 3), ('...', 3)]
    
    


    Sentados bajo la lluvia

    Luego de muchos, muchos días sin que llueva en muchos lugares de la provincia, el fin de semana se desató con todo. 



    Listado de herramientas de seguridad

    El sábado terminé un curso de seguridad en redes en la facultad. Desde la web de Mauro, quien dictó el curso, se puede acceder a un listado de herramientas de seguridad. Todas están probadas y clasificadas según su licencia. Además hay enlaces a listas de correo, sitios web y referencias a libros.

    Foto del último día de curso: