Pues eso. Un comando vale más que mil palabras
find . -type f -size +50000k -exec ls -lh {} \; |
awk ‘{ print $9 “: ” $5 }’ | less
Pues eso. Un comando vale más que mil palabras
find . -type f -size +50000k -exec ls -lh {} \; |
awk ‘{ print $9 “: ” $5 }’ | less
El progreso de LyX es imparable. Una de las novedades que trae la nueva versión 2.0 de es el soporte integrado de Sweave para ejecutar código R. Para versiones 1.6 o inferiores, así era la configuración. Sin embargo, ahora se ha facilitado mucho el procedimiento.
Si tenemos instalado R, abrimos LyX 2.0 y nos vamos a Documento >> Configuración >> Módulos >> Disponibles y añadimos el módulo “Sweave”. Aceptamos y en el menú de entornos tenemos al final uno denominado “Trozo” englobado en el tipo Sweave. Bajo este entorno escribiremos el código R/Sweave deseado y al compilarlo se insertará en nuestra salida PDF.
¿Ya está? Pues no os dije que era más fácil. Aquí dejo un ejemplo en formato LyX 2.0 (debéis cambiar la extensión de odt a lyx) y en PDF.
De nuevo, tras los 6 meses de rigor, tenemos una nueva versión de Ubuntu.
Aunque un poco tarde en este post recopilo enlaces interesantes para acostumbrarnos lo mejor y más rápidamente posible a las novedades que trae consigo.
Vídeo: ¿Qué hace a Ubuntu 11.10 interesante?
Vídeo: Instalación de Ubuntu 11.10
No te preocupes, no has retrocedido 3 años en el tiempo. Este tutorial sirve para compilar un software de datación de filogenias llamado r8s. Hay que decir que la última versión 1.71 fue lanzada como en 2006 y que los compiladores que requiere están obsoletos y no se encuentran para versiones recientes, al menos, para Debian/Ubuntu. Por este motivo, probé a compilar en una versión antigua de Ubuntu, la 8.04 LTS “Hardy Heron”. Me bajé la imagen ISO de la distribución y la instalé en VirtualBox. Una vez dentro de Ubuntu 8.04 me descargué el código de r8s v1.71. Con esto sobre el escritorio, comienza el manual:
1. Instalar el paquete “atool” y descomprimir el fichero:
$ sudo aptitude install atool
$ aunpack r8s1.7.dist.tar.Z
2. Instalamos compiladores de Fortran. No sé cuáles de ellos son estrictamente necesarios, en mi caso instalé los siguientes paquetes:
$ sudo aptitude install libg2c0-dev cfortran fortran77-compiler fortran95-compiler g77
3. En la carpeta que anteriormente descomprimimos, nos dirigimos a el subdirectorio “src” y compilamos:
$ cd r8s1.71/src
$ make
Si no da ningún mensaje de error, debería de estar compilado. Para comprobar que el proceso ha transcurrido correctamente, podemos ejecutar r8s:
$ ./r8s
Y debería de aparecernos un prompt consistente en “r8s>”.
Bueno, ahora queda entender cómo funciona. pero eso ya será en otro episodio.
Una vez que hemos instalado UZBL, vamos a configurar.
1) Los ficheros de configuración de Uzbl van en ~/.config/uzbl/, el propio programa crea ese directorio cuando lo ejecutas por primera vez.
2) La historia, las cockies, los scripts, etc. van en ~/.local/share/uzbl/. Y los scripts van en ~/.local/share/uzbl/scripts/.
3) El fichero de configuración principal se llama config, y está en ~/.config/uzbl/. En él están definidos todos los atajos de teclado, y prácticamente todo el comportamiento de Uzbl. Es posible crear otro fichero, por ejemplo uzbl.name, en el que se cambian algunas cosas, por ejemplo, añadir algunos atajos para diccionarios, wikis, etc. (ver abajo). Para que lo lea, en la última linea de config añadimos:
include /home/name/.config/uzbl/config.name
Y listo.
#
# === Keyboard bindings ======================================================
# With this command you can enter in any command at runtime when prefixed with
# a colon.
#@cbind :_ = %s
# --- Page movement binds ---
#@cbind j = scroll vertical 20
#@cbind k = scroll vertical -20
#@cbind h = scroll horizontal -20
#@cbind l = scroll horizontal 20
#@cbind <Page_Up> = scroll vertical -100%
#@cbind <Page_Down> = scroll vertical 100%
#@cbind << = scroll vertical begin
#@cbind >> = scroll vertical end
#@cbind ^ = scroll horizontal begin
#@cbind $ = scroll horizontal end
#@cbind <Space> = scroll vertical end
# Para que espacio avance por pantallas y no salte al final de la página
@cbind <Space> = scroll vertical 100%
# --- Navigation binds ---
#@cbind b = back
#@cbind m = forward
#@cbind S = stop
#@cbind r = reload
#@cbind R = reload_ign_cache
# --- Zoom binds ---
#@cbind + = zoom_in
#@cbind - = zoom_out
#@cbind T = toggle_zoom_type
#@cbind 1 = set zoom_level = 1.0
#@cbind 2 = set zoom_level = 2.0
# --- Appearance binds ---
#@cbind t = toggle_status
# --- Page searching binds ---
#@cbind /* = search %s
#@cbind ?* = search_reverse %s
# Jump to next and previous items
#@cbind n = search
#@cbind N = search_reverse
# Para que al abrir una nueva página no vuelva a abrir la web de Uzbl, sino una en blanco
@cbind w = event REQ_NEW_WINDOW about:blank
# Para abrir mi página local con enlaces con el atajo 'ga'
@cbind ga = uri file:///home/ama/.config/uzbl/ama.html
# --- Web searching binds ---
@cbind gg<Google:>_ = uri http://www.google.com/search?q=\@<encodeURIComponent(%r)>\@
@cbind \\awiki<Archwiki:>_ = uri http://wiki.archlinux.org/index.php/Special:Search?search=\@<encodeURIComponent(%r)>\@&go=Go
@cbind \\wiki<Wikipedia:>_=uri http://en.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
@cbind \\wike<Wikipedia:>_=uri http://es.wikipedia.org/w/index.php?title=Special:Search&search=\@<encodeURIComponent(%r)>\@&go=Go
@cbind \\aweb<AllTheWeb:>_ = uri http://www.alltheweb.com/q=\@<encodeURIComponent(%r)>\@&go=Go
@cbind \\arc<Archive.org:>_ = uri http://www.archive.org/search.php?query=\@<encodeURIComponent(%r)>\@&go=Go
@cbind \\dic<dictionary.com:>_ = uri http://www.dictionary.com/browse/\@<encodeURIComponent(%r)>\@
@cbind \\abbr<abbreviations.com:>_ = uri http://www.abbreviations.com/\@<encodeURIComponent(%r)>\@
@cbind \\ext<filext.com:>_ = uri http://filext.com/file-extension/\@<encodeURIComponent(%r)>\@
@cbind \\dthes<thesaurus.com:>_ = uri http://thesaurus.com/browse/\@<encodeURIComponent(%r)>\@
@cbind \\aurb<urbandictionary:>_ = uri http://www.urbandictionary.com/define.php?term=\@<encodeURIComponent(%r)>\@
@cbind \\cald<CALD:>_ = uri http://dictionary.cambridge.org/search/british/?q=\@<encodeURIComponent(%r)>\@
@cbind \\def<Definitions.net:>_ = uri http://www.definitions.net/definition/\@<encodeURIComponent(%r)>\@
@cbind \\drae<DRAE:>_ = uri http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=\@<encodeURIComponent(%r)>\@
@cbind \\abio<b10:>_ = uri http://bioinfo10.ugr.es:4080/\@
@cbind \\clave<clave:>_ = uri http://clave.librosvivos.net/\@
@cbind \\conj<Conjugate:>_ = uri http://www.wordreference.com/conj/ESverbs.asp?v=\@<encodeURIComponent(%r)>\@
# --- article_queue binds ---
@cbind qpu = spawn @scripts_dir/article_queue.py push
@cbind qpo = spawn @scripts_dir/article_queue.py pop
@cbind qp _ = spawn @scripts_dir/article_queue.py pop %s
@cbind qap = spawn @scripts_dir/article_queue.py append
@cbind qsh = spawn @scripts_dir/article_queue.py shift
@cbind q> = spawn @scripts_dir/article_queue.py forward
@cbind qx = spawn @scripts_dir/article_queue.py forward
@cbind q< = spawn @scripts_dir/article_queue.py back
@cbind qz = spawn @scripts_dir/article_queue.py back
@cbind ql = spawn @scripts_dir/article_queue.py list
@cbind del = js javascript:(function(){f='http://delicious.com/save?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title)+'&v=5&';a=function(){if(!window.open(f+'noui=1&jump=doclose','deliciousuiv5','location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550'))location.href=f+'jump=yes'};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})();
# === Post-load misc commands ===============================================
# Set the "home" page. Cambiada a mi página local de enlaces.
set uri = file:///home/ama/.config/uzbl/ama.html
Durante los últimos meses he participado en la organización de un ciclo de conferencias en la facultad. Una vez finalizado y tras la evaluación de los asistentes era el momento de realizar los diplomas. Los habituales lectores de este humilde blog ya sabréis que soy amante de las soluciones elegantes, así que me lancé a escribir un programita que generara los diplomas en formato LaTeX de forma automática y luego los compilara a pdf.
Pyploma es un script que, por supuesto, está escrito en python que coge un fichero LaTeX que contiene unos marcadores comentados y añade una serie de datos para cada entrada de una lista de datos. Aunque está originalmente pensado para generar diplomas, sustituyendo el dichero LaTeX podría servir para autorrellenar cualquier otro tipo de documento, incluso si está escrito en otro lenguaje.
Para que compile a pdf necesita tener instalado LaTeX y para unir los pdfs en un fichero depende de pdftk. No obstante estas funciones son opcionales y pueden comentarse en el script.
Hacerlo funcionar es tan sencillo como modificar en el script el nombre de la plantilla LaTeX y el de la lista de datos. Después escribir:
$ python pyploma.py
Y listo. Parece magia, pero no, es Python. Para ver el resultado, esta es la salida.
Si quieres descargar la plantilla LaTeX, la lista de datos y el script, sigue este enlace.
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{mathpazo}
\renewcommand{\familydefault}{\rmdefault}
\usepackage[landscape,a4paper]{geometry}
\geometry{verbose,tmargin=0cm,bmargin=0cm,lmargin=0cm,rmargin=0cm}
\usepackage{fancybox}
\usepackage{calc}
\usepackage{multicol}
\usepackage{graphicx}
\begin{document}
~
\vspace{1cm}
\begin{center}
\huge{Un Bioinformatiquillo (http://bioinformatiquillo.wordpress.com)\\ certifica que}
\vspace{1cm}
\Huge{\textbf{%pointname
}}
\vspace{1cm}
\Large{con D.N.I. no.%pointdni
ha asistido y superado los estudios\\ con una califiaci\'on de %pointcalification
en el}
\vspace{1cm}
\Huge{\textbf{I CURSO DE REALIZACIÓN DE DIPLOMAS CON PYPLOMA}}
\vspace{1cm}
\Large{celebrado el 6 de julio de 2011 vitualmente en el blog, con una duraci\'on de un ratillo}
\vspace{.5cm}
\Large{Y para que as\'i conste se expide el siguiente certificado en el ciberespacio a \today.}
\vspace{.5cm}
\begin{multicols}{3}
\small Delegado de asusntos LaTeros\\
\vspace{3cm}
León Delátex Pérez
%\vspace{1cm}
Director de Pythonismo\\
\vspace{3cm}
Ser Piente Grande
%\vspace{1cm}
El/La Alumno/a\\
\vspace{3cm}
~~~~~~~~~~
\end{multicols}
\tiny El blog Un Bioinformatiquillo, con domicilio en el Vía Láctea s/n
\end{center}
\end{document}
Periquillo de los Palotes 00000001-A NOTABLE Rodolfo Chiquilicuatre 000000002-B SOBRESALIENTE Chavo del Ocho 00000003-C APROBADO
# -*- coding: utf-8 -*-
# Este generador de diplomas lee una lista con nombre, dni y calificación para
# rellenarlos en una plantilla LaTeX con un marcador para cada campo.
# Opcionalemente compila los ficheros LaTeX generados y los une en uno solo.
# Si la plantilla LaTeX da error de compilación, pulsar intro varias veces.
print "Pyploma: Generador de diplomas en formatos LaTeX y pdf.\n"
# Invocar al terminal
from commands import *
import commands
def run_command(cmd):
getstatusoutput(cmd)
# Cargar lista de nombres
lista = open("listadip", "r").readlines()
#contador
a = 100
for line in lista: # para cada persona...
a += 1 #contador
b = str(a) #pasa el contador a cadena
salida = open("output" + b + ".tex","w") # crea fichero LaTeX para cada persona
person = line[0:-1].split("\t") # pasar la cadena en lista
text = open("certi.tex") # abrir documento LaTeX
text = text.read() # leer documento LaTeX
text_list = list(text) # pasa a lista
y_cali = text.find("%pointcalification") # busca marcador de calificación
z_cali = len("%pointcalification")+1
text_list[y_cali+z_cali:y_cali+z_cali] = list(person[2]) # inserta calificación
y_dni = text.find("%pointdni") # lo mismo para el dni
z_dni = len("%pointdni")+1
text_list[y_dni+z_dni:y_dni+z_dni] = list(person[1])
y_name = text.find("%pointname") # lo mismo para el nombre
z_name = len("%pointname")+1
text_list[y_name+z_name:y_name+z_name] = list(person[0])
text_final = "".join(text_list) # de lista a cadena
salida.write(text_final) # guarda los cambio en el fichero creado
salida.close() # cierra el fichero creado
run_command(str("pdflatex " + "output" + b + ".tex")) # compila el fichero LaTeX a pdf (opcional)
print person[0] #control
run_command(str("pdftk output*.pdf cat output todos_diplomas.pdf")) # crea pdf con todos los diplomas creados (opcional)
print "\n¡FINAL DE LA OPERACIÓN!" #control
Fuente: UsemosLinux
Cuando hay problemas de espacio, y el mismo sistema te avisa de ellos, tal vez es hora de hacer una limpieza de la carpeta /var/cache/apt/archives, en la que se guardan los paquetes necesarios para instalar programas y aplicaciones. Para saber cuánto espacio están ocupando estos archivos, puedes correr en consola el siguiente comando:
$ du -sh /var/cache/apt/archives
$ sudo apt-get autoclean
Elimina del cache los paquetes .deb con versiones anteriores a los de los programas que tienes instalados.
$ sudo apt-get clean
Elimina todos los paquetes del cache. El único inconveniente que podría resultar es que si quieres reinstalar un paquete, tienes que volver a descargarlo.
$ sudo apt-get autoremove
Borra los paquetes huérfanos, o las dependencias que quedan instaladas después de haber instalado una aplicación y luego eliminarla, por lo que ya no son necesarias.
Tras 4 meses del lanzamiento del esperado Firefox 4, tenemos una nueva versión del navegador. En las versiones más recientes de las distribuciones basta con actualizar los repositorios, así es el caso de Ubuntu 11.04.
Si tienes una versión de Ubuntu anterior (10.04 o 10.10) no está en repositorios oficiales, por lo que es necesario instalar unos nuevos. Abrimos una consola y ejecutamos:
$ sudo add-apt-repository ppa:mozillateam/firefox-stable
$ sudo apt-get update
$ sudo apt-get upgrade
Y listo.
La vida es compleja, pero con Linux resulta más simple.
Quería renombrar masivamente una serie de ficheros cuyo nombre era: 1-A1-M13F.ab1, 1-A2-M13F.ab1,… y 2-A1-M13R.ab1, 2-A2-M13R.ab1,… Para quitarle los dos primeros caracteres, quedándose respectivamente: A1-M13F.ab1, A2-M13F.ab1,… y A1-M13R.ab1, A2-M13R.ab1,…
Googleando un poco encontré una aplicación que se ejecuta por consola y se llama mmv. Para instalarla, tecleamos:
$ sudo aptitude install mmv
Y los comandos que utilicé para resolver mi problema fueron:
$ mmv “1-*” “#1″
$ mmv “2-” “#1″
Así de sencillo, así de Linux.
Aquí pongo una lista de tres enlaces con tareas que se recomiendan hacer después de una instalación limbia de Ubuntu 11.04:
Últimos comentarios