apuntes – El Blog de Tomas http://tomasdel.com Tue, 28 Feb 2017 00:09:35 +0000 es-ES hourly 1 https://wordpress.org/?v=4.9.4 Post instalación Ubuntu 14.04 http://tomasdel.com/338 http://tomasdel.com/338#respond Mon, 20 Oct 2014 22:13:29 +0000 http://tomasdel.com/?p=338 Por diversos motivos, tuve que reinstalar Ubuntu 14.04 en mi notebook. Siempre me ocurre que cada vez que necesito instalar de cero o reinstalar, tengo que recordar o anotar previamente cuales son los programas y configuraciones que tenia en la vieja instalación.

Así que la intención del post este es tener una referencia o machete personal en linea para todo lo que tiene que ver con la post instalación de Ubuntu, y por ahí a alguno le sirve.

1 – Agregar Repositorios adicionales

Algunos repositorios de terceros no vienen agregados de forma predeterminada por cuestiones legales, sin embargo, suele tener software adicional o mas actualizado que los repositorios oficiales.

La forma mas sencilla de activarlo es buscando la aplicación “Software & Updates” o “Software y actualizaciones”, y una vez allí, visitar las pestañas Software de Ubuntu (Activar main, universe, restricted y multiverse, Código fuente es opcional y yo no lo activo), Otro Software (Socios de Canonical e Independientes, de nuevo puede activarse opcionalmente los referentes al código fuente, y yo no lo hago) y Actualizaciones (security, updates, proposed y backports).

Una vez realizado lo anterior, es recomendable realizar una actualización general:

sudo apt-get update && sudo apt-get upgrade

Quiero agregar que esto lo hago en mi notebook personal que es de uso “Desktop”, para el caso de un servidor es posible que existan otras precauciones y debería consultarse algún tipo de literatura especializada.

2 – Software adicional

Lo siguiente que hago es instalar el software que utilizo de forma diaria o rutinaria para mis tareas personales y laborales, algunos de estos programas se consiguen desde los repositorios oficiales, otros los descargo desde las webs oficiales. Cada uno de estos tipos de software sera comentado de forma separada.

2.1 – Software desde los repositorios oficiales

Cabe aclarar que el listado siguiente es un listado de cosas que a mi me sirven, así que es posible que muchas de las cosas que aparecen ustedes quieran obviarlas.

build-essential
aptitude
synaptic
htop
nmap
mc
gummi
guake
xchat
subversion
git
mercurial
postgresql
php5
php5-pgsql
pgadmin3
apache2
audacious
shutter
gparted
ipython
gimp
meld
openjdk-7-jdk
adobe-flashplugin
wine
ssh
vlc
aria2

2.2 – Software que descargo desde las paginas oficiales

El siguiente listado es de aquellos programas que descargo desde sus respectivas paginas oficiales. Dejo los nombres de los programas, con los links a las paginas de descargas, y algunos comentarios en los casos que lo requieran.

Netbeans: Descarga un archivo de extensión .sh, que debe ser ejecutado desde la terminal, previamente agregándole permisos de ejecución (chmod +x archivo.sh).
Sublime3
Mendeley
Chrome
Geany: En este caso descargo el código fuente en un archivo .tar.gz, lo compilo e instalo (./configure, make y sudo make install). El paso del configure siempre falla porque necesita dependencias, si es el caso, instalar libgtk2.0-dev e intltool.
Virtualbox
Teamviewer: En este caso, a pesar de instalar una versión de SO de 64bits, la versión de TV para la misma arquitectura siempre falla en la instalación. Por ello, la solución fácil es bajar la versión de 32bits sin importar que arquitectura se uso en el SO. A mi me anduvo siempre sin problemas.
Skype: Tiene sus trucos, ver mas abajo.
Dropbox
Vagrant

2.2.3 – Skype

Al intentar instalar Skype, mediante el paquete .deb descargado desde el sitio oficial, puede ocurrir que se encuentren con un error como el siguiente:

 skype:i386 : Depends: libqt4-dbus:i386 (>= 4:4.5.3) but it is not going to be installed.
              Depends: libqt4-network:i386 (>= 4:4.8.0) but it is not going to be installed.
              Depends: libqt4-xml:i386 (>= 4:4.5.3) but it is not going to be installed.
              Depends: libqtcore4:i386 (>= 4:4.7.0~beta1) but it is not going to be installed.
              Depends: libqtgui4:i386 (>= 4:4.8.0) but it is not going to be installed.
              Depends: libqtwebkit4:i386 (>= 2.2~2011week36) but it is not going to be installed.
              Depends: libstdc++6:i386 (>= 4.2.1) but it is not going to be installed.
              Depends: libxss1:i386 but it is not going to be installed.
              Depends: libxv1:i386 but it is not going to be installed.
              Depends: libssl1.0.0:i386 but it is not going to be installed.
              Depends: libpulse0:i386 but it is not going to be installed.
              Depends: libasound2-plugins:i386 but it is not going to be installed.

En este caso, hay que instalar las dependencias indicadas, les dejo la linea de aptitude para dicha instalación.

sudo aptitude install libqt4-dbus:i386 libqt4-network:i386 libqt4-xml:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libstdc++6:i386 libxss1:i386 libxv1:i386 libssl1.0.0:i386 libpulse0:i386 libasound2-plugins:i386

Si en la instalación les dice que el paquete skype esta parcialmente instalado y quiere desinstalarlo, acéptenlo sin problemas, y la próxima vez que intenten instalar Skype, el error inicial no debería aparecer.

2.3 – Instalación manual de programas

2.3.1 – Si se dispone del código fuente

Lo normal cuando se disponga del código fuente de un programa, es tener que realizar los siguientes 3 pasos:

./configure
make
sudo make install

El primer paso revisa que todas las librerías que necesita el software para compilarse se encuentran en el sistema. En caso que exista un error en este paso, sera necesario buscar en la documentación del software particular que librerías necesita, o buscarlo en la Web.

El comando make compila el software, es decir, crea los binarios a partir del código fuente, que sera lo que se ejecute posteriormente en nuestro equipo.

El comando make install ubica los binarios y crea accesos directos y variables de entorno para que el software recién compilado sea utilizable desde el sistema. Como puede necesitar escribir en carpetas del sistema, es necesario ejecutarlo con permisos de root (por eso sudo adelante).

Una vez realizado el make install, la carpeta donde se realizo la compilación puede ser eliminada, pero en caso de no querer borrarla para probar o recompilar posteriormente sin necesidad de bajar el software nuevamente, recomiendo ejecutar un cuarto comando make clean, que elimina archivos intermedios utilizados durante la compilación, y que ocupan lugar en el disco y no son necesarios.

2.3.2 – Si se descargaron archivos con extensión .deb

Muchos de los programas ofrecen binarios precompilados de extension .deb, instalables en Debian/Ubuntu etc…

Para instalar dicho programas, solo es necesario ejecutar lo siguiente:

sudo dpkg -i archivo.deb

En la medida que recuerde mas tareas pos-instalación, la idea es agregarla. Si se les ocurre algún software adicional que ustedes usen, etc… los invito a compartirlo en los comentarios del blog (Les agregue redes sociales para que no tengan que hacerse ni un usuario en el sitio, no sean vagos :p ).

UPDATE: Leyendo blogs, me encontré con este post que mediante dpkg genera un archivo con la lista de paquetes instalados en un sistema (Debian, Ubuntu o derivados). Lo interesante es que de paso muestra como re instalar en el nuevo sistema los paquetes a partir del archivo generado.

]]>
http://tomasdel.com/338/feed 0
Hadoop: Introduccion, articulos e Instalación http://tomasdel.com/326 http://tomasdel.com/326#respond Mon, 13 Oct 2014 14:32:15 +0000 http://tomasdel.com/?p=326 El día miércoles 8/10/2014 en el marco de una materia me invitaron a exponer la experiencia que vengo reuniendo en lo que respecta al Big Data y a Hadoop en particular. Ya tenia preparada una diapositiva introductoria, la cual amplié y corregí de cara al curso, el cual es sobre Sistemas Distribuidos y agregue algún contenido adicional sobre como opera HDFS de forma mas detallada.

Las slides:

Por otro lado, el profesor me pidió, de la vasta documentación en el tema, 1 articulo o dos para ofrecer como bibliografia. Si bien podría haber dicho el libro de Tom White, que es la referencia en el tema, me pareció que para un curso que no es especifico de Hadoop dos artículos mas específicos podrían ser un mejor aporte. Los artículos que elegí fueron:

[DEA,2004]: Dean, J. Et. all. “MapReduce: Simplified Data Processing on Large Clusters“.  OSDI. 2004.

[SHV,2010]: Shvachko, K. Et. all. “The Hadoop Distributed File System“. IEEE. 2010.

Por ultimo, Agrego dos tutoriales que armamos con dos colegas (Esteban y Alejandro) para instalar Hadoop para desarrollo (conocida como single-node) y como cluster.

]]>
http://tomasdel.com/326/feed 0
Algo de Javascript: Alternativa para evento onload del tag BODY http://tomasdel.com/139 http://tomasdel.com/139#respond Mon, 07 Mar 2011 14:25:39 +0000 http://blog2.tomasdelvechio.com.ar/?p=139 El evento OnLoad de Javascript es utilizado generalmente en la etiqueta BODY de una pagina HTML con el fin de ejecutar una porción de código especifica cuando la pagina termina de cargar. Es un evento que hace sencillo realzar algunas verificaciones complementarias vía JS.

Sin embargo, si trabajamos con esquemas de plantillas heredadas, como por ejemplo Jinja2, es muy posible que no tengamos disponible la etiqueta BODY. En estos casos, lo mejor es usar código Javascript en HTML embebido en un tag SCRIPT.

En cualquier lugar del template colocamos:

bc.

Todo lo que escribamos allí se ejecutara cuando nuestra pagina termine de cargar.

]]>
http://tomasdel.com/139/feed 0
Montar servidor subversion con svnserve http://tomasdel.com/130 http://tomasdel.com/130#respond Thu, 13 May 2010 01:02:31 +0000 http://blog2.tomasdelvechio.com.ar/?p=130 Ando con poco tiempo, así que esto es mas un posteo de un link.

La cuestión es que para el laburo andamos investigando diferentes cuestiones relativas a configurar un entorno de desarrollo distribuido, y toco el turno a como montar un servidor de _Subversion_.

Hay dos opciones, montarlo usando los servicios de Apache, o usar el servidor integrado a _Subversion_, llamado _svnserve_. Opte por esta segunda opción, para ver algo que no conocía (Apache es muy usado, y supongo que no debe haber complicaciones extrañas).

De todas las paginas que consulte, la mas sencilla y clara “fue esta”:http://www.kopernix.com/?q=svnd_como

Realmente salio funcionando con las explicaciones de la pagina, sin dar vueltas.

Por ello, a pesar de ser simplemente un enlace, es el resultado de una búsqueda, y creo que aporta algo.

]]>
http://tomasdel.com/130/feed 0
Aplicar diferentes orientaciones de paginas en un mismo documento de Openoffice.org Writer http://tomasdel.com/129 http://tomasdel.com/129#respond Tue, 11 May 2010 21:28:18 +0000 http://blog2.tomasdelvechio.com.ar/?p=129 Pues bueno, el titulo del post es bastante descriptivo. Lo que ocurre es que busque esta respuesta mucho tiempo, y no podía encontrarla.

No podía encontrar la manera de poner diferentes orientaciones de paginas en un mismo documento, y si bien el método es un poco largo para algo dentro de todo sencillo, funciona.

La respuesta correcta “aquí”:http://user.services.openoffice.org/es/forum/viewtopic.php?f=17&t=141#p394

]]>
http://tomasdel.com/129/feed 0
Prueba de codigo http://tomasdel.com/124 http://tomasdel.com/124#respond Wed, 24 Mar 2010 03:15:43 +0000 http://blog2.tomasdelvechio.com.ar/?p=124 notextile..


# -*- coding: iso8859-15 -*-
# diccionario de comidas preferidas de cada persona
comidas = {
“Juan” : “tiburón en escabeche”,
“Pablo” : “paella don Beto”,
“Alfredo” : “sesos de mono”,
“Fulano” : “cucarachas fritas”,
“Sonia” : “burros”,
“Lucas” : “hamburguesas Mr Paul”,
“Jose” : “ceviche”,
“Cesar” : “arroz con pollo”
}
afirmativas = set([‘si’,’s’,’mucho’,’porfa’])

def saluda(nombre, comida):
respuesta = raw_input(“Hola ” + nombre + “, ¿te gusta ” + comida + “? “)
if respuesta not in afirmativas:
pregunta(nombre)

def pregunta(nombre):
respuesta = raw_input(“Hola ” + nombre + “, ¿qué comida te gusta? “)
comidas[nombre] = respuesta

for nombre in [“Juan”, “Pablo”, “Alfredo”, “Fulano”, “Sonia”, “Lucas”, “Mengano”,”Cesar”]:
if nombre in comidas and comidas[nombre] is not None:
saluda(nombre, comidas[nombre])
else:
pregunta(nombre)

p. Es un _plugin_ de _Textpattern_ para colorear sintaxis llamado _Fox Code_. Funciona 🙂 aunque es posible que le haga algunas “mejoras”

]]>
http://tomasdel.com/124/feed 0
Comando alias, paths completos y otra yerbas… http://tomasdel.com/97 http://tomasdel.com/97#respond Sat, 06 Mar 2010 11:06:10 +0000 http://blog2.tomasdelvechio.com.ar/?p=97 Hace unos meses en la lista de _GRULIC_ se armo “una discusión sobre el uso de alias sobre comandos básicos”:http://proposicion.org.ar/lurker/message/20090812.021722.4cb825da.es.html a la hora de que estos sean usado en _scripts_.

El hilo se llamaba *una razón para no usar ‘alias ls=”ls –color”‘* y quien hacia el planteo comentaba que al hacer un _script_, este le arrojaba un extraño error que tenia su origen en el mecanismo de “alias de comandos”:http://clinuxera.org/gulp/?p=704.

Entonces se plantea como primera conclusión, que era importante no usar ese dichoso comando, alias, para los comandos, porque podía dar origen a este tipo de problemas.

Allí es el momento donde intervienen los mas experimentados en programación, y rectifican la conclusión, diciendo que el problema no es si usar o no usar el comando _alias_, sino que en todo _script_ medianamente serio, no deben invocarse los comandos sin mas, como cuando estamos trabajando en el _Shell_ sino que debe invocarse el _path_ completo, es decir, la ruta completa del binario.

Así, por ejemplo, invocar a _ls_ en un _script_ no es simplemente escribiendo dicho comando, sino escribiendo */bin/ls*.

En realidad, esta necesidad (la de poner la ruta completa al ejecutable) no se basa solo en el hecho del comando alias, sino que al estar llamando a un programa, si no se lo invoca con su dirección absoluta, como es bien explicado por uno de los intervinientes en la discusión:

bq. […] en gral. en scripts siempre es buena idea usar los paths
completos a los programas. Justamente para evitar problemas con
distintos valores de PATH (por ejemplo porque ha cambiado el usuario
que ejecuta el script) y esquivar problemas de alias en el shell
como estos.

La lectura de este hilo se dio en un contexto que por motivos de laburo yo mismo estaba probando mucho de _scripts_ y haciendo pequeñas funcionalidades para automatizar algunas tareas.

Por eso, y como me sirvió, lo quería compartir.

]]>
http://tomasdel.com/97/feed 0
Tamaño de una base de datos en PostgreSQL http://tomasdel.com/106 http://tomasdel.com/106#respond Tue, 12 Jan 2010 11:25:22 +0000 http://blog2.tomasdelvechio.com.ar/?p=106 La otra vez, por un requerimiento del trabajo, tenia que pasar en un informe el tamaño de una Base de datos de _PostgreSQL_ de un sistema interno que estoy manteniendo.

Nunca me había puesto a pensar, pero _PostgreSQL_ no es como otras bases de datos (como _Firebird_) que tienen un archivo único por cada base de datos, sino que maneja las DB de una manera interna.

No voy a emitir juicio de valor sobre las ventajas y desventajas de una u otra forma, lo que era claro que para lo que tenia que obtener, la cosa no iba a ser tan fácil.

O eso creía. La cuestión esta resuelta en “esta pagina”:http://www.summersault.com/community/weblog/2005/10/25/reporting-on-disk-space-usage-for-postgresql-and-mysql-databases.html y el _script_ es el siguiente:

bc. SELECT pg_database.datname,
pg_shadow.usename AS owner,
pg_database_size(pg_database.datname) AS size,
pg_size_pretty(pg_database_size(pg_database.datname)) AS pretty_size
FROM pg_database
JOIN pg_shadow ON pg_database.datdba = pg_shadow.usesysid;

Obtenemos así un listado donde la primer columna contiene el nombre de cada DB y la ultima columna nos da el tamaño en Bytes de dicha DB.

Resta comentar que es necesario ser administrador de _PostgreSQL_ para ejecutar el _script_, o que nuestro usuario tenga permiso de lectura sobre la tabla *pg_shadow*.

]]>
http://tomasdel.com/106/feed 0