Posts | Tags | Categories | Archive

La Odisea

Puede ser raro que alguien de ciencias, como yo, escriba sobre una de las obras más significativas de la literatura griega clásica. Pero, contrariamente a la gente de letras que sabe distinguir qué es o no de letras, la mentalidad científica ve ciencia por doquier, incluso en la Odisea.

Recientemente …


Borrado de un descriptor (corrección de errores)

Tengo que hacer algunas correcciones a la serie de artículos sobre descriptores, en concreto sobre el método __delete__ del protocolo descriptor.

Primero, aclaremos cómo funciona el método __delete__ y en qué se diferencia de __del__. No se trata de métodos destructores tal y como se entiende en otros lenguajes de …


Balance y cierre de ejercicio

Ya sé que parece extraño cerrar un periodo en mitad de año, pero los que me siguen de aquí a unos años sabrán que suelo hacer un breve resumen de situación comentando qué he estado haciendo y qué proyectos futuros estoy ideando.

Como puse en el último twitt, parece que …


Scala vs. Python vs. Lua

Hace bastante tiempo que ando comentando cosas de estos tres lenguajes: Scala, Python y Lua. Hasta el momento no he hecho una comparativa entre ellos y creo que es el momento de hacerlo, siempre desde el punto de vista de un programador. Más que llegar a la conclusión de cuál …


De Generaciones Perdidas

Allá por los 80, en Zaragoza, cuando internet era tan sólo la i del protocolo TCP/IP y los meros mortales se apañaban con sus modems para acceder a alguna BBS local, y donde la única autopista de la información consistía en una cinta semanal de 200 MB. que llegaba …


Mutable o inmutable, he ahí el dilema

Info

Disponible también como ipynb

Quien se enfrenta a la documentación de python por primera vez se pregunta porqué esa insistencia en mantener tipos de datos duplicados en versiones mutables e inmutables. Tenemos listas y tuplas que casi hacen lo mismo. En python3, tenemos el tipo inmutable bytes y el …


Mutabilidad de Listas

Info

Puedes visionar este artículo y descargártelo como notebook ipython en http://nbviewer.jupyter.org/5177340

Mucha gente, cuando se enfrenta por primera vez al lenguaje python, no entiende bien el concepto de “inmutabilidad” que tanto repite la documentación al tratar de diferenciar algunos tipos contenedores como tuplas, listas, conjuntos …


Dobleces en python

En el último artículo del blog contaba en qué consistía doblar código1:

…un código que se pliega sobre sí mismo. Un código que te lleva desde un principio a un final por el camino más corto.”

Para ilustrar este concepto voy a usar un trozo de código python que …


Estado de situación

Hacía mucho que no actualizaba mi blog y creo que ya es momento de contar algunas cosillas. Me gustaría no tener que hablar de la crisis por la que estamos pasando, al menos en España, pero resulta imposible abstraerse de su influencia.

En mi trabajo como informático en una administración …


Pruebas básicas de python (y scala)

Como continuación del artículo “Cómo contratar a un programador de python” voy a dar las soluciones a algunas de las pruebas básicas que comentaba del proceso de selección. Añado también las soluciones sobre cómo sería con scala y de paso comparamos ambos lenguajes1.

Prueba del “Hello, World!”

Desde que …


Entornos virtuales en python 3.3

Con la nueva versión de python 3.3 se ha incorporado la propuesta PEP-405 que añade al repertorio interno de python la posibilidad de crear entornos virtuales de modo parecido a virtualenv (vimos esta herramienta hace poco al hablar de la instalación de módulos.

Tal como lo define PEP …


Cómo contratar un programador de python

En época de crisis se produce un curioso desequilibrio de las cosas. Por un lado, están los emprendedores que se arriesgan mucho más buscando productos innovadores con los que poder competir mejor, alejados de las tendencias impuestas por las grandes empresas del sector. Son las startups, surgidas como respuestas del …


Estudio función factorial en scala - operador sufix

A medida que voy aprendiendo más sobre el lenguaje scala, se me ocurren nuevas formas de expresar la función factorial.

La “expresividad” del lenguaje permite usar operadores para crear código más corto. Por ejemplo, la función factorial con “plegados” (“folds“) que poníamo en un artículo anterior se podría expresar así …


Instalación de módulos

Resulta habitual la instalación de nuevos módulos o paquetes en nuestra instalación de python, para lo que basta con introducir en el directorio site-packages el fichero del módulo o, en caso de paquetes, el directorio con el paquete. Algunas veces, la instalación requiere compilar e instalar librerías en el sistema …


BOM - marcas de orden de bytes

Los BOM‘s son marcas que aparecen en ficheros y transmisiones de datos para indicar el “orden de los bytes” de la codificación empleada. Si pensamos que el tamaño de cada dato transmitido puede ser 2, 4 u 8 bytes (16bits, 32 bits ó 64 bits), el orden de los …


Descriptores - Parte 3

Hasta ahora hemos visto cómo funcionan los descriptores para acceder a atributos de datos que funcionan como “propiedades” (property). Pero al iniciar esta serie de artículos dije que los descriptores son también “los responsables del funcionamiento de métodos, métodos estáticos, métodos de clase y del mecanismo super() responsable de la …


Lingua Franca

Este mes de mayo, el conocido y muchas veces criticado índice tiobe comenta que, tras 8 años, las posiciones en este índice de los lenguajes de programación no han sufrido demasiado altibajos, con excepciones notables como el “Objective C” empleado por el ecosistema Apple (iPhone/iPad/MacOS). Achaca esta inmovilidad …


Problemas con los nombres largos en NTFS

Un buen día comenté a un compañero de trabajo que en su carpeta compartida del servidor de ficheros pronto iba a tener problemas al usar nombres de carpetas demasiado largos. El explorador de ficheros ya se negaba a listas algunas carpetas y el problema iba a más con algunas herramientas …


Estudio función factorial en scala - Revisión funcional

Como programador de python que todavía anda algo despistado estudiando scala, ahora empiezo a captar la filosófía que hay detrás de este lenguaje de programación. Mientras que python empienza a erradicar poco a poco la programación funcional, en scala su influencia es cada vez mayor hasta el extremo de considerar …


Codificando en binario

A raiz de la consulta de un colega, me ha llamado la atención el módulo binascii. Este módulo se encarga de la codificación y decodificación de cadenas binarias para su transmisión en mensajes de texto. Lo habitual es que sea usado por otros módulos como uu, base64 o binhex, por …


Estudio función factorial en scala

Como continuación al artículo que dediqué al estudio del factorial, voy a explicar cómo se haría este famoso algoritmo usando scala. Tengo que añadir que tan sólo llevo una semana con el lenguaje scala, por lo que es muy probable que haya algún aspecto de este lenguaje que me haya …


Rentrée (nueva temporada)

Desconectado de mis tareas habituales depués de algunas semanas viajando por Francia, veo que me quedaron varios proyectos y artículos en dique seco que pretendo recuperar. Con la “reentrada” (o, como dirían los franceses, “rentrée”) me he propuesto algunas metas para esta nueva temporada (por llamarla de algún modo) que …


iconv en python

Últimamente he necesitado pasar algunos ficheros de una web a codificación utf-8, codificación de caracteres más acorde con lo que se lleva hoy en día. En sistemas linux es una labor que se puede hacer fácilmente con la utilidad iconv:

$ iconv -f cp850 -t utf8 <fichero_entrada.txt >fichero_salida.txt

Pero …


Método __getattribute__

Si has seguido hasta ahora la serie de artículos sobre descriptores, habrás visto que buena parte de la magia de los objetos en python se debe al método __getattribute__ que todo objeto adquiere de su antecesor común, la clase object.

En el último artículo, donde hablaba de las optimizaciones de …


Optimizaciones con los Métodos Especiales

Métodos Especiales

Dentro del llamado “modelo de datos” de python, la sobrecarga de operadores, tan característica de la programación orientada a objetos, se realiza mediante la definición de algunos métodos de nombre especial. A través de esta técnica se define cómo se comportará una clase frente a los operadores del …

© Chema Cortés. Built using Pelican. Theme is subtle by Carey Metcalfe. Based on svbhack by Giulio Fidente.