Fabric, automatiza tareas en remoto
En la medida de lo posible tenemos que automatizar todo lo posible. No solo reducimos tiempo sino que reducimos errores, y a la vez, estamos documentando un proceso. Muchas de estas ideas ya las dejé claras en ¡Haz scripts! Sin embargo, hay situaciones donde es más complicada esta situación, como por ejemplo, trabajar con máquinas remotas. Aquí entra Fabric en acción, una librería para Python que permite automatizar procesos en remoto a través de SSH
Seguir leyendo
Natural Language Understanding con Snips NLU en Python
Uno de los campos más importantes de la inteligencia artificial es el del tratamiento del lenguaje natural. Ya en 1955, en el primer evento sobre Inteligencia Artificial, y promovido entre otros por John McCarthy (creador de Lisp) y Claude Shannon (padre de la teoría de la información y promotor del uso del álgebra de boole para la electrónica), estas cuestiones entraron en el listado de temas
Seguir leyendo
Introducción a Prolog, tutorial en español
Prolog es un lenguaje de programación lógico, quizá uno de los más populares de este paradigma ya que fue el primero en implementarlo, en el año 1972 en Francia
Seguir leyendo
Mónada ST en Haskell: STRef, STArray
Haskell tiene una librería muy completa, con muchas estructuras de datos y, en este caso, mónadas muy interesantes. En este caso vamos a hablar de la mónada ST. ST son las siglas de State Threads. Fueron definidas por Simon Peyton-Jones en un paper de 1994 y son una forma muy curiosa que tiene Haskell de permitirnos escribir código con estructuras de datos mutables. La gracia está en que se garantiza que es imposible que la mutabilidad interna que hay dentro de la mónada ST salga al exterior, de modo que de cara al exterior son funciones puras igualmente. Esta mónada no sirve para comunicarse con el exterior como sí sirve IO pero si podemos usar ST antes que IO, mejor
Seguir leyendo
Un muro en Cuzco
En Cuzco (Perú), capital del antiguo imperio Inca, hay un muro que está compuesto de dos zonas claramente diferenciadas
Seguir leyendo
Programación dinámica: el problema de knapsack
Los algoritmos nos ayudan a resolver problemas. Hay muchas maneras de diseñarlos, un método que no conocía hasta hace poco y que me ha resultado muy interesante conocer es la programación dinámica. La idea fundamental de la programación dinámica es dividir el problema en subproblemas y posteriormente calcular una única vez cada subproblema. Existen dos acercamientos: top-down y bottom-up. La programación dinámica nos permite resolver problemas más rápidamente que con fuerza bruta, gastando a cambio mucha más memoria del ordenador
Seguir leyendo
Futures y Tokio: programar de forma asíncrona en Rust
Rust es un lenguaje muy potente y uno de sus principales focos de diseño es la concurrencia. Sin embargo, si damos un repaso por la librería estándar veremos un par de cosas nada más, algo que puede resultar decepcionante. Esto se debe a que Rust no impone ningún modelo específico de concurrencia como sí lo hacen Go o Erlang. Rust nos provee de los ladrillos de construcción necesarios
Seguir leyendo
Te espero en la feria Espacios de Ingenio
Los días próximos 15 y 16 de marzo tendrá lugar la feria Espacios de Ingenio. Tendrá lugar en la Escuela Técnica Superior de Arquitectura, en la ciudad de Valladolid. El objetivo es interesar a los alumnos de bachillerato en las carreras técnicas
Seguir leyendo
Lenguajes de programación que todo buen programador debe conocer
Dice Bjarne Stroustrup (creador de C++) que nadie debería llamarse un profesional si no conoce al menos 5 lenguajes suficientemente diferentes entre sí. Comparto con él esa afirmación, así que he decidido hacer una lista con esos 5 lenguajes suficientemente diferentes entre sí. La razón de que sean diferentes entre sí es que implementan paradigmas distintos
Seguir leyendo
¿Cómo recuperar archivos borrados?
Inevitablemente te ha tenido que pasar. Estabas manipulando ese fichero tan importante que contenía tu trabajo de clase. Y lo borraste. Todo el mundo puede tener esos despistes y por eso los sistemas operativos modernos suelen llevar una Papelera de Reciclaje, una forma de recuperar archivos que hemos borrado sin querer, dándonos otra oportunidad para pensar si realmente queremos borrar el archivo. No obstante, ¿qué pasa si has vaciado la papelera sin darte cuenta de lo que había dentro? O peor, hay pinchos USB que carecen de la opción de papelera. ¿Está todo perdido? No, todavía podemos probar un programa de recuperación. Existen varios programas como Recuva o Disk Drill. Yo voy a usar Recuva que es más popular, puedes descargar aquí Recuva. Se trata además de un programa gratuito, sin coste para el usuario (aunque existe una versión pro)
Seguir leyendo