GNU/Debian 8 Jessie instalado, pero…

1430453022_MatalicComo todos sabéis, el 25 de abril se liberó oficialmente la nueva versión de GNU/Debian, la número 8, apodada Jessie. En otras circunstancias, esto habría sido motivo de celebración entre la comunidad GNU/Linux y de software libre, pero su lanzamiento ha quedado deslucido por la polémica de la adopción de systemd y la aparición de un fork, Devuan.

Como hace bastante tiempo que me tomo la vida de una manera más tranquila y he dejado de ser tan activista del software libre, no haré un estudio pormenorizado de la polémica a favor o en contra de systemd. Por supuesto que tengo una opinión formada, pero dese el punto de vista más amateur, ya que no soy ingeniero de sistemas ni informático de profesión.

Sé que systemd se cargó mi instalación de Archlinux hace un par de años. Lo acogí con la ilusión de que el sistema iba a ser más estable y más manejable, pero se ralentizaba y daba multitud de errores, así que terminé por conservar la partición /home y reinstalar Debian, que nunca me había dado problemas.

Por probar, estuve tonteando con Linux Mint (perdón, con LMDE), porque no dejaba de ser Debian, y no me parecía mal la idea de tener una distribución testing en lugar de la stable de toda la vida. a partir de ahí siempre me he movido con la testing, desde Wheezy hasta Jessie, y en cuanto pueda, me pasaré a Stretch.

Continuar leyendo “GNU/Debian 8 Jessie instalado, pero…”

Ejecutar comandos de Linux mediante Python

1429409720_application-x-pythonComo opinión personal, y sin que sea el motivo de crear una disputa entre unos y otros, creo que PHP es más tolerante a errores que Python. Claro, que digo esto porque llevo únicamente un par de semanas dedicado a Python, y aunque como lenguaje de programación me parece sencillo de usar y aprender, creo que escupe errores constantemente, y que a veces encontrar el error no es tan intuitivo como pudiera parecer.

Pero una vez mencionada mi opinión personal, es hora de ponerme al tema del post. Resulta que he encontrado como incentivo para aprender Python el uso de este lenguaje en todos mis scripts de shell que tengo para mantenimiento de mis sistemas. En ocasiones, me doy cuenta que lo que en un script de shell me lleva únicamente 4-5 líneas, en Python me lleva casi el triple, y sin dejar de escupirme errores en la consola. Visto desde el lado bueno, no sólo aprendo a usar Python, sino que si en alguna ocasión necesito complicar el script, posiblemente Python me ofrezca más potencia para hacerlo.

He comenzado a pasar mis scripts a Python, pero sin fijarme en la versión del mismo. Resulta que cuando me di cuenta, estaba programando en Python 2, cuando prácticamente todo el mundo programa ya en Python 3. Esto es importante porque el módulo que se utiliza para usar la línea de comandos está obsoleto en Python 3. Aun así, lo explicaré para ambas versiones.

Continuar leyendo “Ejecutar comandos de Linux mediante Python”

Git para uso personal en Debian (II)

1427946407_bitbucketLa breve introducción que hice en el último post es un acercamiento inicial a cómo funciona Git. Por supuesto, no pretende ser exhaustivo, porque hay manuales mejores que el mío, y que además lo explican muy bien, con dibujitos y todo. En el post de hoy explicaré algo que no hice en la primera parte: de qué va eso de las ramas (branches) y cómo subir nuestro repositorio a un servidor remoto.

Sigo pensando que esto no es una explicación de alto nivel para usar Git. Es la manera en que yo uso Git y cómo me ayuda a mantener ordenados mis propios proyectos.

Es importante conocer que aún estamos trabajando en local, no en remoto.

Creación de ramas

Branching es la creación de ramas. ¿Para qué sirve una rama? Nosotros estaremos editando nuestros archivos de manera local, en la rama principal o master, hasta que aparezca una idea nueva, un nuevo experimento o simplemente queramos hacer una prueba para ver si funciona de determinada forma. Así, tendremos una rama master y una rama de prueba, que podremos llamar como nos dé la gana. Si la idea funciona, la podremos unir con la rama master y seguir programando. Si ha sido una mala idea, no volvemos a tocarla y seguimos programando en la rama principal. Un ejemplo sería el de este gráfico:

Continuar leyendo “Git para uso personal en Debian (II)”

Git para uso personal en Debian (I)

1427946339_github-128El título original de esta entrada iba a ser Git para torpes, que quizá hubiese encajado mejor con lo complicado que es en ocasiones entender ciertos aspectos del  mundo del software colaborativo. Estoy utilizando desde hace meses Git como repositorio para mis proyectos, pero aún no lo domino del todo, en ocasiones no tengo claro si de verdad comprendo los conceptos sobre los que se basa Git.

De hecho, escribí hace un año un pequeño manual que iba a ser una guía sencilla de Git, pero al probar mis propias instrucciones, aquello no funcionaba. Esta vez intentaré explicar for dummies de qué va Git.

Desde que se está desarrollando software colaborativo, se han creado varios sistemas de control de versiones, como CVS, Subversion, Mercurial, etc. La verdad es que nunca entendí de qué iba eso de las versiones y cómo podían los programadores desarrollar diferentes versiones y subir sus aportes sin problemas.

Por supuesto, hay muchos, y de muchos tipos, pero sólo me voy a referir al que utilizo: Git.

Antes que nada, he de decir que Git es sólo el sistema, es una aplicación para Windows, Mac o GNU/Linux. Lo que conocemos con GitHub o Bitbucket son sólo los servidores remotos donde podemos guardar los repositorios.

Continuar leyendo “Git para uso personal en Debian (I)”

RStudio Server y uso de R en red, en Debian Wheezy

Dispuesto a instalar RStudio en un ordenador del trabajo, entré en la dirección de RStudio para bajar el programa en Windows. Sin embargo, advertí la presencia de la posibilidad de instalar RStudio para su uso en red, cuando se tiene un servidor Linux. Curiosamente, tenemos un servidor GNU/Linux con un Debian que funciona de perlas en el trabajo, así que se me ocurrió instalar RStudio para tener las siguientes ventajas:

  • Puedo acceder vía web desde cualquier equipo, da igual el sistema operativo que presente
  • Puedo guardar mis archivos en una ubicación centralizada del servidor, y dejar de depender de las copias que pueda guardar de manera local en cada equipo (lo habitual es tener treinta copias o más, con sus diferentes versiones, pupulando entre los equipos, ya que todos los ordenadores son de todos).
  • Supone un reto (y posiblemente esto invalida el resto de los anteriores argumentos).

Las instrucciones son bastante sencillas, y aunque tuve que lidiar con el proxy que tenemos para poder actualizar mediante apt-get, la verdad es que fue bastante rápido.

En primer lugar, actualizamos el sistema:

apt-get update
apt-get upgrade -y

Instalamos R y (por si no estaba instalado), sudo:

apt-get install r-base sudo

Si estamos en Wheezy, hay que instalar OpenSSL 0.9.8, que no existe en Wheezy, pero sí en Squeeze:

wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8o-4squeeze14_i386.deb
dpkg -i libssl0.9.8_0.9.8o-4squeeze14_i386.deb

Recomiendo visitar la página de instalación de OpenSSL, porque el paquete es diferente según la arquitectura de nuestra máquina, y esta página de soporte de RStudio, ya que Ubuntu y Debian necesitan diferentes dependencias.

Luego nos bajamos y nos instalamos RStudio-Server:

wget http://download2.rstudio.org/rstudio-server-0.98.1103-i386.deb
dpkg -i rstudio-server-0.98.1103-i386.deb

Ya se puede configurar el servidor:

nano /etc/rstudio/rserver.conf

Y añadir lo siguiente:

# 8787 es el puerto por defecto, pero se puede modificar
 www-port=8787
# Permitimos el acceso desde toda la red; se puede especificar
# la dirección desde la que se puede entrar
 www-address=0.0.0.0

Ahora reiniciamos:

rstudio-server restart

Más sobre Configurar RStudio-Server.

Finalmente entramos en el servidor desde la dirección IP del servidor, pero indicando el puerto:

http://10.35.95.160:8787

captura_RStudio

Más sobre el mantenimiento y comandos de administrador para RStudio-Server.

Navegar e instalar paquetes en Debian, tras un proxy

Creo que este es el tercer post referente a la configuración de Debian 7 (Wheezy) cuando estamos tras un proxy, pero volveremos a repetirlo. En mi trabajo cambian frecuentemente de configuración de Internet, de IPs y demás cosas, y es bastante cansado reconfigurarlo todo, así que de nuevo vuelvo a poner una referencia básica para poder navegar sin problemas y poder bajar paquetes, tanto mediante apt-get como mediante wget.

Solamente hay que editar dos ficheros. El primero de ellos es el /etc/apt/apt-conf, en el que hay que añadir lo siguiente:

Acquire::http::Proxy "http://usuario:password@172.22.200.10:8080/";
Acquire::https::Proxy "http://usuario:password@172.22.200.10:8080/";
Acquire::ftp::Proxy "http://usuario:password@172.22.200.10:8080/";

La configuración es sencilla. Indicamos, por este orden, usuario, password, dirección IP del proxy y el puerto de escucha. Con este fichero nos aseguramos que podemos instalar paquetes y hacer update y upgrade.

Si queremos bajar mediante wget, hay que modificar el fichero /etc/bash.bashrc, y añadir al final algo como esto:

export http_proxy=http://usuario:password@172.22.200.10:8080/
export https_proxy=http://usuario:password@172.22.200.10:8080/
export ftp_proxy=http://usuario:password@172.22.200.10:8080/

En teoría, se puede usar wget y se puede navegar. Es posible que algún navegador utilice el proxy del sistema (Chromium, sin ir más lejos) y no se le pueda configurar al estilo de Iceweasel o Firefox. Aunque no sea necesario, no está de más configurar las variables de entorno en /etc/environment y añadir esto:

http_proxy=172.22.200.10:8080
https_proxy=172.22.200.10:8080
ftp_proxy=172.22.200.10:8080

Así, los navegadores detectarán el proxy y aparecerá un prompt para introducir nombre y contraseña.

Campos vacíos en MySQL

1422473437_Database_copy_Amazon_RDS_MySQL_DB_Instance-128Ya era hora de que escribiera una entrada en este año 2015, que tengo el blog medio abandonado, aunque realmente no es así, yo sigo aquí, aprendiendo programación, Linux, Debian, R y lo que tercia. El caso es que en esta ocasión he tenido que hacer unas búsquedas en una base de datos para actualizar datos. Para mis adentros, esto me pasa por no diseñar correctamente la base de datos, o mejor, la aplicación que se conecta a ella, pero eso ya es lo de menos.

El problema era que tenía que hacer unas búsquedas en la que los campos están vacíos. Respecto a esto, se ha escrito mucho sobre el tema en Internet, ya sé que no es nuevo, pero no está de más hacer un recordatorio, porque no evitará  problemas en el futuro.

Continuar leyendo “Campos vacíos en MySQL”

CodeIgniter 2.x y PHP 5.6.0

Como advertí en mi anterior post, doy la solución para el molesto problema de la actualización a PHP 5.6, que hacía inusable completamente las aplicaciones creadas con CodeIgniter 2.x. El error consistía en que nada más ejecutar la aplicación web, aparecía el siguiente error, que además impedía que la aplicación funcionase:

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

Captura de pantalla - 160614 - 17:05:29

 

La búsqueda fue bastante infructuosa, y hasta hace un par de días, nadie respondió a un llamamiento en los foros de Ellislab (el equipo creador de CodeIgniter). Varias soluciones se habían propuesto, pero ninguna era efectiva. Este pequeño arreglo es lo que he utilizado, de modo que ahora puedo continuar usando mi instalación de Lighhtpd, PHP y MySQL, proporcionadas por Debian.

El error se refiere a la línea 257 del archivo /system/core/Common.php, que dice esto:

return $_config[0] =& $config;

Lo que hay que hacer es sustitutirla por:

$_config[0] =& $config;
return $_config[0];

Después de esto, la aplicación funciona correctamente.

Instalación y puesta en marcha de XAMPP en Debian testing

1403450164_source_php

Hace una semana aproximadamente ejecuté la actualización periódica de mi Debian testing. Casi nunca ttengo problemas, porque la versión testing es casi tan estable como la Debian stable, pero con software más actualizado. Lamentablemente, una de las actualizaciones fue la de PHP, que se actualizó a la versión 5.6.0-beta3. Resulta que el framework quu utilizo, CodeIgniter, tanto en su versión 2.1.4 como en la 2.2, tiene problemas con esa nueva versión de PHP. Así, descubrí con horror que todas las aplicaciones que había construido con CodeIgniter daban error.

Al principio no sabía si era del servidor web o del PHP o de la propia aplicación. Es un error no sólo molesto, sino que impedía utilizar la aplicación completamente. Tras un par de horas de búsqueda, vi el error en numerosas páginas (probablemente porque estaban programadas con el framework CodeIgniter), pero no vi ninguna solución útil, aunque de algo sí me sirvió la búsqueda: el problema era de incompatibilidad entre CodeIgniter y PHP 5.6.0. El error en cuestión era el siguiente:

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

Captura de pantalla - 160614 - 17:05:29

 

De todas las estrategias que vi, me llamaron dos la atención:

  • Hacer un downgrade a cualquier versión de PHP funcionante;
  • Eliminar de mi equipo el servidor web, el servidor MySQL y PHP, e instatar, por ejemplo XAMMP.

Continuar leyendo “Instalación y puesta en marcha de XAMPP en Debian testing”

Cursos edX: están muy bien, pero los dejo

edx410Por si alguno de los lectores de este blog ha estado congelado en un cápsula del tiempo durante los últimos años, resulta que desde hace un tiempo está de moda en la web hacer cursos gratuitos con reconocimiento oficial. Ya sabemos que uno puede ser autodidacta en la web, sólo se necesita perseverancia, pero si uno desea tener un título, un diploma o algo que le acredite, la plataforma edx.org pone a disposición del mundo una serie de cursos gratuitos sobre los temas más variados, desde programación a tecnología de los alimentos, biomedicina, envejecimiento, computación, etc. Y además los imparten universidades prestigiosas, como el MIT, la Universidad de Harvard, Berkeley, etc.

El certificado de capacitación es totalmente válido, y se nos da la oportunidad de continuar con el plan de estudio y poder alcanzar una titulación de un grado más elevado. Los cursos son online, son bastante estrictos en cuanto al seguimiento de semanas, y cuentan con exámenes finales con una fecha estricta.

Por supuesto, los cursos son en inglés, para todos los niveles, desde principiantes hasta más avanzados. En mi caso, he estado haciendo durante las últimas dos semanas el de Introduction to Computer Science and Programming, del MIT, ofrecido por Eric Grimson, con la intención de aprender Pyhton.

Como digo, las últimas dos semanas le he dedicado mucho tiempo y mucho esfuerzo, pero el curso total consta de 12 semanas o así, y requiere un esfuerzo de 12 horas semanales, y mucha constancia. Y mucho tiempo, claro.

En estas dos semanas he estado con la parte sencilla de Python, y aunque he intentado ir al día, me ha costado. Ayer se publicaron los contenidos para la tercera semana, cuando aún no había terminado la segunda semana, se me había pasado la fecha del primer examen y los ejercicios de la semana 2 ya estaban cerrados.

edx-thumb

En estas semanas he tenido tiempo. De aquí en adelante, mi tiempo libre se reduce considerablemente, con lo que apenas tendré tiempo incluso para mi.

Lamento tener que dejar el curso, pero no tengo más alternativa. A mi ritmo, y por mi cuenta, continuaré aprendiendo Python, pero ya no será con certificado del MIT.

Esta misma mañana he anulado el registro de los dos cursos a los que estaba apuntado. Quizá en otro momento.

English version