Archivo | GNU/Linux RSS for this section

Alimentar Tabla desde CSV usando Python


Hoy me enfrenté a la necesidad de alimentar una tabla de una BD de PostgreSQL usando archivos CSV (archivos QVD de Qlikview originalmente) y lo primero que traté de hacer fue generar el archivo CSV para importarlo a PostgreSQL pero algunos archivos estaban dando problemas y cuando es muy grande el CSV a importar, se hace más lento el proceso y el debug.

Desde Qlikview se tenía que recorrer todo el archivo e insertar cada una de las filas generando el comando SQL manualmente. Recurrí a Python para hacer la tarea y el resultado fue hacer el proceso mucho más fácil y divertido. La solución es usar pandas y su conexión para postgreSQL (a través de sqlalchemy), aquí el script:

#!/usr/bin/python

import pandas
from sqlalchemy import create_engine

RUTA_CSV="/ruta/archivocsv/"
archivo="ArchivoCSV.csv"

def main():
#Usando Pandas
engine = create_engine('postgresql://USER:PASS@IP:PORT/BD')
archivocsv=pandas.DataFrame.from_csv(RUTA_CSV+archivo, sep='\t')
archivocsv.to_sql("TABLA", engine, if_exists='append', schema='esquema')

if __name__ == "__main__":
main()

Al utilizar DataFrame.from_csv se crea el dataframe de pandas usando el separador requerido.
Con la función to_sql se realiza la inserción en la BD en la TABLA especificada usando el esquema schema y con la opción if_exists=’append’ indicamos que en caso de la tabla existir en la BD y esquema especificados, se haga una inserción de datos.

De ésta forma fácilmente podemos hacer un volcado de la información de archivos planos a una BD PostgreSQL, si los archivos planos son demasiado pesados es conveniente hacer el proceso en lotes y allí pandas brinda una alternativa también.

Don’t Worry….Be Linux!!!

Anuncios

Descargar archivos en masa con webscrapping en python


En algún momento todos hemos tenido la necesidad de descargar archivos en masa desde páginas de internet (y no, no siempre es con ánimos de piratear cosas). En algunos casos herramientas como JDownloader han sido de ayuda para tomar varios links, pero los links no siempre son visibles y tenemos qué navegar a través de varias páginas para obtener lo que buscamos.

Buscando podcasts para aprender inglés me encontré ésta página: https://learnenglish.britishcouncil.org/en/elementary-podcasts y los materiales me gustaron aunque vi que eran 4 series, dos de 10 capítulos y dos de 20 con sus transcripciones (120 archivos en total) así que descargué los dos primeros audios y me puse el reto de hacer algo con R o python para descargar el resto.

En éste post no voy a entrar en detalles técnicos sobre el script de python pero sí voy a hablar sobre los conceptos clave que involucra hacer un webscrapping para descargar archivos de páginas web:

  1. Conocer la estructura de la página web. Este proceso no es automático totalmente por lo que saber un poco de la estructura de la página de la que se quiere descargar ayuda bastante. Por ejemplo en mi caso, la estructura de la URL de los capítulos es: https://learnenglish.britishcouncil.org/en/elementary-podcasts/series-01-episode-01 que es susceptible de estar en un ciclo de programación. También sé que quiero descargar los archivos MP3 y un transcript en PDF y al examinar el código de la página es fácil ver que hay elementos span con clase “file” donde están los links para descargar.
  2. Determinar la herramienta para el scrapping. Decidí usar python para hacer el scrapping y basado en [1] empecé a entender cómo utilizar la función BeautifulSoup de la librería bs4 de python. Mi plan sería crear carpetas por cada sesión y guardar un archivo por cada capítulo (4 sesiones, ~15 captíulos por sesión) así que busqué cómo descargar los archivos una vez tuviera los links de descarga y encontré que así como en GNU/Linux, hay un wget en python.
  3. Crear el script. Con la estrategia definida creé el script que inicialmente fue de unas 15 líneas y luego lo perfecccioné un poco con el caso específico de la págin de British Council (algunas veces tienen 5 archivos de descarga, otras 2) y básicamente busca los links en la página, descarga los archivos y los almacena en la estructura de archivos que describí en el paso 2. El script y próximamente más info estilo notebook se encuentra disponible en mi github

Este es un ejemplo para que lo ajusten a sus necesidades y ojalá lo compartan en los comentarios.

Don’t worry….Be Linux!!!

[1] https://www.dataquest.io/blog/web-scraping-tutorial-python/

Adiós a un amigo del Software Libre: Adiós Marlon Manrique


Jamás esperé retomar el blog de esta forma pero este post es para dar la despedida personal para un amigo geek….

Marlon

“El man más teso que conozco”, esas eran las palabras que utilizaba siempre para describir a Marlon Manrique cuando sostenía un diálogo con alguna persona apasionada por los temas de la tecnología y más aún cuando se trataba de Software Libre . Marlon fue la persona que he visto que entendía los sistemas informáticos y la tecnología como ninguna otra y sin dudas me marcó profesionalmente y personalmente por su humildad. Siempre he tenido la concepción que las personas que realmente saben y pueden considerarse genios tienen una calidad humana incomparable, no se jactan de su conocimiento y están dispuestos siempre a compartirlo con los demás; esa precisamente es la descripción para Marlon Manrique, un genio.

Marlon fue un personaje conocido en la escena geek de Manizales por estar a la vanguardia de temas de programación y Hacking con dispositivos –como aquella vez que programó un wii mote para comunicarse con un celular a través de processsing por allá en 2008 [1]–. Si se hablaba de Java (en todos sus sabores), Arduino, Processing, Mobile Processing en Manizales y sin temor a equivocarme, en Colombia, Marlon estaba involucrado. Quienes lo conocieron pueden dar fe de su forma de ser descomplicada, abierto siempre al diálogo y con ganas de compartir todo su conocimiento y parte de su ser, fue así como lo conocí por nuestro interés mutuo en Software Libre y en lograr que nuestra región y nuestro país supieran un poco de esta filosofía de vida que busca el empoderamiento tecnológico de todas las personas, especialmente aquellos que no tienen los recursos económicos para hacerlo.

Sencillamente era genial compartir una cerveza con él y hablar de tecnología, podían pasar las horas sin darse cuenta, fue así como también me llegué a dar cuenta que teníamos gustos similares por la música –aunque mis gustos fueran demasiado comerciales para él– y conocer algunos de sus gustos aunque no fuéramos amigos cercanos. Recuerdo especialmente cómo se preparó sin dejar su lado geek aparte para un concierto de Nine Inch Nails (que finalmente cancelaron) y al que pensaba ir con luces en su cuerpo que se activaran y cambiaran con la intensidad de su movimiento.

La última vez que lo vi fue precisamente escuchando Metal  en el único bar decente para este tipo de música en la ciudad de las puertas abiertas y cruzamos un par de palabras sobre nuestras vidas, estaba dedicado a JavaScript y cómo mejorar los procesos que los Frameworks hacían de forma muy ineficiente en su concepto. El día de hoy me enteré de la triste noticia de su partida [2] y no quería dejar pasar desapercibido este duelo personal, de la comunidad tecnológica de Manizales y de su familia, a quienes no conozco por lo plano de este mundo tecnológico pero que quiero que sientan un abrazo fraternal en este momento tan difícil de asimilar.

Adiós Marlon, Happy Hacking wherever you are….

Quienes quieran saber más quién fue Marlon y su importancia en la escena geek, los invito a que visiten su perfil en LinkedIN [3] y su canal de YouTube [4].

 

 

[1] https://www.youtube.com/watch?v=QUZB9_VGme0

[2] http://www.lapatria.com/sucesos/hallaron-cuerpo-dentro-de-una-casa-en-el-barrio-el-campin-227227

[3] https://www.linkedin.com/in/marlonj

[4] https://www.youtube.com/channel/UCEGt_g6F79wpH9zfXyky0Gg

 

Foto tomada de la página web del periódico La Patria

Licencia tus órganos con GPL!!!


Antes que nada quería invitarlos a que donen sus órganos, este es un problema social que tenemos en nuestro país (y en todo el mundo), no se difunde lo suficiente la cultura de la donación.

Contexto propuesta

Definición licencia GPL: https://es.wikipedia.org/wiki/GNU_General_Public_License

En resumen, la licencia GPL es una licencia conocida como copyleft (parodia de copyright) que busca proteger los programas de Software Libre para que los programas derivados conserven esta naturaleza y sean por obligación libres también. Es una de las licencias más restrictiva, pero también la que más protege y garantiza que un Software sea libre

Idea

Cuando me suscribí a la donación, pensé que sería bueno implementar una especie de GPL: las personas que se vean beneficiadas de mis órganos, deben donar los suyos (uno supone que un receptor estaría de acuerdo en donar en un momento dado, pero no falta el que no) para así armar una cadena de donación.

Esto puede parecer un poco fuera de contexto, pero de cierto modo tiene relación porque lo que buscamos con el SL al fin y al cabo es generar una cultura de comunidad en la que nos ayudemos unos a otros. Les comparto el link [1] para que sepan más de la donación y se registren.

Don’t worry, Be Linux!!!

[1] http://www.ins.gov.co/donante-de-organos-y-tejidos/Paginas/obtener-el-carne-de-donante.aspx

Instalar extensión PECL en XAMPP (Linux)


Hola de nuevo…..

Este es mi primer post en este nuevo blog y me gustaría empezar con pie derecho, hablando de Linux y de información que tal vez es esquiva en internet. Esta vez quiero hablarles de PHP y la instalación de extensiones PECL (The PHP Extension Community Library) usando XAMPP (Apache+PHP fácil de instalar); como ejemplo, hablaremos de la instalación de la extensión APC que sirve para almacenar en caché código interpretado PHP, para optimizar la respuesta de un sistema con demanda alta.

Si tuviéramos una instalación de PHP+Apache independiente/compilada por nosotros, tendríamos que recompilar todo de nuevo para poder crear la extensión para PHP, pero en XAMPP sólo tenemos que hacer esto una vez (sin tantos parámetros molestos de compilación de PHP) y usar las herramientas que nos ofrece la plataforma para hacer el proceso más sencillo para futuras extensiones que queramos instalar. Procedamos entonces con los pasos para efectuar la instalación de APC en XAMPP:
1. Descargar versión devel de XAMPP según corresponda con nuestra versión de XAMPP:
http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/
2. Descargar código fuente de PHP (según la versión instalada en XAMPP: http://www.php.net/releases/
3. Descargar código fuente de extensión PECL. Por ejemplo para APC: http://pecl.php.net/package/apc
4. Instalar versión devel de XAMPP:
sudo tar -xvf xampp-devel.tar.gz -C /opt
5. Descomprimir código fuente de PHP y pasarlo a la carpeta
/opt/lampp/include/php
6. Compilar PHP como usuario estandar en la carpeta
/opt/lampp/include/php (puede requerir permisos de escritura)
./configue
make

Notas: – Pueden requerirse librerías especiales como libxml (libxml2-dev) en este paso, recurrir al gestor de paquetes de nuestra distribución para instalar las librerías que nos pida PHP

– No se hace make install porque sólo necesitamos esta instancia de PHP para tener lo necesario para compilar la extensión PECL
7. Descomprimir la extensión (en cualquier ubicación) y ubicados en la carpeta del código
fuente ejecutar:
/opt/lampp/bin/phpize
./configure –with-php-config=/opt/lampp/bin/php-config
make
sudo make install
Con el paso anterior la extensión debió quedar en el directorio de
las extensiones de XAMPP (/opt/lampp/lib/php/extensions/no-debug-non-zts-
20090626 en mi caso)
8. Activar la extensión en php.ini. Por ejemplo con APC:
;APC
extension=”apc.so”;
9. Reiniciar Apache:
sudo /opt/lampp/lampp restart

Con estos pasos tendremos una nueva sección en la información de PHP con nombre apc como se puede ver en esta imagenAPCSi quieren estos pasos en un formato que puedan almacenar, hice este PDF con las instrucciones detalladas en el post

Don’t Worry……Be Linux!!!!!

Solucion escritorio negro en Ubuntu 9.10


Buenas noches, aun les escribo desde el OpenMoko…Esta vez quiero compartirles este truco que les puede ser de ayuda en Ubuntu…
Ayer actualice un computador de Ubuntu 9.04 al 9.10, el PC tiene una tarjeta de video ATI (muchos de ustedes sabran que ATI y Linux no se llevan muy bien) y todo fue de maravilla a excepcion del escritorio que en vez de verse los iconos de los programas y la imagen de fondo se veia un fondo negro. No se porque se esta presentando el error, pero la solucion mas sencilla es dar click derecho en el escritorio y seleccionar ‘Cambiar fondo de escritorio’ y en la pestania ‘Efectos visuales’ desactivar los efectos seleccinando ‘Ninguno’. En este momento debemos ver los archivos e iconos y el fondo de escritorio que teniamos previamente establecido.

Obviamente esta no es la mejor solucion pero es una forma de evitar el error. Para mas info miren este hilo en ubuntuforums  y mas propiamente este post donde dan algunas instrucciones adicionales.
Espero que puedan asi disfrutar de Karmic Koala que para mi es un gran lanzamiento por parte de Ubuntu.

Don’t Worry……..Be Linux!!!

Un post desde el OpenMoko


Buenas noches….hoy estuve ensayando la conexion wifi del OpenMoko en SHR y como se pueden dar cuenta, tuve exito :D. este es el motivo del post….cuando este en un PC subire una foto para que vean el navegador Midori en accion en el OpenMoko.

Don’t Worry……..Be Linux!!!