F R E E http://itaca.nireblog.com Viajando por el mundo del Software Libre Thu, 28 Aug 2008 11:02:52 +0200 F R E E http://nireblog.com/imagenes/logo.png http://itaca.nireblog.com http://nireblog.com GNU wget: obtiene todo el contenido web que quieras en tu ordenador http://itaca.nireblog.com/post/2007/10/17/gnu-wget-obtiene-todo-el-contenido-web-que-quieras-en-tu-ordenador http://itaca.nireblog.com/post/2007/10/17/gnu-wget-obtiene-todo-el-contenido-web-que-quieras-en-tu-ordenador (artículo original en inglés)

Wget es tan flexible que probablemente lo has estado usando durante años sin saberlo, muchos scripts lo usan como método para obtener archivos, incluso lo vuelve a intentar automáticamente bajo ciertas circunstancias...

Probablemente el mejor cumplido que le puedo hacer, es que los autores del script pueden usarlo y luego olvidarse de él.

Es una de esas grandes herramientas que hacen de *nix tan grande, es simple, hace lo que dice, y como muchas otras partes de unix, es robusto.

Otra cosa guai de wget es que no es interactivo, lo que significa puedes iniciar una nueva bajada, desconectar de tu sesión actual y encontrar lo que has bajado la próxima vez reconectes.

Cómo utilizarlo

La manera más simple de invocar wget es escribiendo wget URL/nombreFichero

$ wget http://debaday.debian.net/contribute/

Si escribiste este comando ahora tendrás un fichero denominado index.html en el directorio en el que te encontrabas mientras lo escribias. Este fichero contendrá la contribute page del dia del blog de Debian package. Léelo, DPOTD te necesita ;)

Obtén la jerarquia de un directorio

Para obtener el contenido completo de un directorio y sus subdirectorios, necesitarás especificarle a wget que baje tu URL recursivamente. Para ello necesitarás añadir la opción -r :

$ wget -r http://debaday.debian.net/

Este comando generará un mirror local del blog de debaday. Nota que wget respeta el fichero robots.txt por defecto, si existe. Esto significa que no bajará los directorios y ficheros excluidos en el fichero robots.txt.

Multiples URLs

Wget soporta múltiples URLs. Tanto puedes especificarlas en un fichero (una URL por línea) o especificarlas en una línea de comandos (separadas por un espacio).

$ wget url1 url2 ... urlN

o especificar donde contener la URL con la opcion -i

$ wget -i filePathAndName
Otras opciones

Wget tiene un montón de opciones más, puedes usar por ejemplo:

  • -l para indicarle la intensidad a la que deberia ir la bajada recursiva, la intensidad por defecto es 5.
  • -c es inestimable dado que nos permite continuar una bajada interrumpida
  • -O nos permite especificar un fichero de salida como destino (-O nombreFichero)

Hay muchas otras opciones en wget, la mejor manera de conocerlas es leer su página man. Para los que no lo sepan, probad a escribir lo siguiente en un terminal ;)

$ man wget

Disponibilidad

Como wget es parte del proyecto GNU, asumimos que es parte de la mayoria de distribuciones Linux. No obstante, está disponible en los paquetes oficiales de Debian y Ubuntu:

  • Debian: stable, old stable, testing y unstable
  • Ubuntu: dapper, edgy, feisty y gutsy.

Comunidad y desarrolladores

GNU wget está actualmente mantenido por Micah Cowan. El autor original de GNU Wget es Hrvoje Nikšić.

Enlaces

Comments

]]>
Wed, 17 Oct 2007 23:15:05 +0200
Play OGG! http://itaca.nireblog.com/post/2007/05/19/play-ogg http://itaca.nireblog.com/post/2007/05/19/play-ogg Me sumo a la iniciativa de Bitassa a lloure y Blackshell de apoyar a la campaña que ha iniciado la Free Software Foundation para promocionar el formato Ogg Vorbis como substituto del MP3.
El argumento es bien sencillo: no hemos de pedir permiso a ninguno para escuchar y registrar audio usando ordenadores. Con el OGG Vorbis no necesitamos permisos, y tiene todos los beneficios de ser libre.

Ogg Vorbis es un formato multimedia como el MP3 pero mejor - y respeta tu libertad. Cuando veas un fichero con la extensión Ogg - ficheroMusica.ogg - Play it!

Play Ogg

Comments

]]>
Sat, 19 May 2007 15:19:33 +0200
Pon un poco de arte ASCII en tu vida http://itaca.nireblog.com/post/2007/05/13/pon-un-poco-de-arte-ascii-en-tu-vida http://itaca.nireblog.com/post/2007/05/13/pon-un-poco-de-arte-ascii-en-tu-vida Para los que les suena a chino esto del ASCII (American Standart Code for Information Interchange), no es más que un set de caracteres basado en el alfabeto latino que se utiliza en los lenguajes de Europa-Oeste y en el inglés moderno.

Se trata de un código estándar de 7 bits para la representación de caracteres con valores binarios, pero no se pueden representar acentos. La lista del código ASCII se compone de un total de 128 caracteres, aunque para el ASCII-art sólo se utilizan del valor 32 al 126, además del 13 que sirve para pasar de línea.

El ASCII-art se emplea muy a menudo para mandar dibujos o una firma original y divertida en los correos electrónicos; también se utiliza en el IRC, para ilustrar páginas web que son sólo de texto o simplemente para dibujar y entretenerse. Existe un código ASCII extendido que consta de 255 números, que incluyen símbolos matemáticos, gráficas...pero que no se utilizan en este arte. En Internet existen muchas galerías de dibujos en ASCII, su elaboración es un tanto minuciosa y lleva mucho tiempo pero el resultado final salta a la vista, con ese efecto óptico parecido al puntillismo.

Y para los más frikis, recomiendo este artículo tan divertido sobre la vaca.  Y como no la cantidad de imágenes del ascii-art library.

Comments

]]>
Sun, 13 May 2007 16:58:23 +0200
Músicos: ubuntu studio ya está cerca... http://itaca.nireblog.com/post/2007/04/05/masicos-ubuntu-studio-ya-esta-cerca http://itaca.nireblog.com/post/2007/04/05/masicos-ubuntu-studio-ya-esta-cerca Está anunciado para dentro poquitos dias (el 19 de abril) y ya estamos impacientes para probarlo.

Se trata de Ubuntu Studio, una distribución orientada a la edición multimedia profesional de audio, video y gráficos, indicada para quien quiera utilizar Ubuntu como un terminal de trabajo digital.

Uno de los paquetes estrella tenía que ser el cinerella (un editor de video para linux), y es un mallorquin quien se encarga de empaquetar y mantener el paquete, aunque comenta que por culpa de problemas con las licencias (no)declaradas en el código fuente se ha tenido que posponer su inclusión en el repositorio universe de ubuntu.

Otros programas interesantes de vídeo que se incorporan a esta distribución:

  • pitivi - editor de Video

  • cinepaint - Programa de diseño y retoque de imágenes diseñado para trabajar con películas de 35mm y otras imágenes de alta resolución.

  • ffmpeg - Reproductor Multimedia, servidor y decodificador

  • ffmpeg2theora - decodificador de vídeo Theora usando ffmpeg

  • kino - Editor no-lineal para vídeo Digital

  • stopmotion - Programa para crear animaciones stop motion

  • dvgrab - Video digital Grab via IEEE1394

Más en el wiki

Comments

]]>
Thu, 05 Apr 2007 12:01:50 +0200
Dia sin internet http://itaca.nireblog.com/post/2007/03/24/dia-sin-internet http://itaca.nireblog.com/post/2007/03/24/dia-sin-internet Me entero por Enrique Dans y por Menéame que hoy en teoría era el dia sin internet, dia para reflexionar si somos capaces de estar un dia sin tanta tecnología, sea desde el pc, portátil, móvil o cualquier otro dispositivo.

Sinceramente paso de esta nueva moda de hacer "el dia sin xxx". Para hoy había dejado pendientes algunas cosas como actualizar el portátil o terminar un par de trabajos. Y como no ponerme al dia mi correo que llevo un par de dias con demasiado trabajo.

Pero me ha hecho gracia la poca acogida de esta iniciativa de estar hoy sin conectarse, vamos, que en menéame no he visto (veremos mañana las estadísticas) que haya bajado el ritmo habitual de visitas de los sábados.

Se ha metido en nuestras vidas la costumbre  de leer los feeds de  nuestros blogs y sitios favoritos, mirar el correo y contestar los mensajes pendientes, e incluso mirar la agenda para planificar bien el día.

Pero si lo pensais bien, eso antes lo hacíamos a mano... Leíamos el periódico - en casa, en el bar...-, consultar la agenda, reuniones, trabajos pendientes, etc.

Intenta acordarte lo que harías si no funcionara nada. No tendrías noticias "frescas" hasta ir al bar a leer el periódico o que alguien te llamara por teléfono y te lo contara.

La tecnología está de lleno en nuestras vidas, pero hemos de recordar que no es más que una herramienta, y que tenemos que saber disfrutar de la vida también sin ella...

Dia ideal para irse de excursión (y que no tenga cobertura ni el móvil ni ningún otro gadget :D ) o para coger la familia y marcharse a dar una vuelta, lo que sea, pero al menos unos minutos para pensar hasta que punto estamos enganchados...

Comments

]]>
Sat, 24 Mar 2007 13:15:16 +0200
OooBasic: Copias de respaldo de los documentos de OpenOffice.org en un email con un click http://itaca.nireblog.com/post/2007/03/01/ooobasic-copias-de-respaldo-de-los-documentos-de-openofficeorg-en-un-email-con-un-click http://itaca.nireblog.com/post/2007/03/01/ooobasic-copias-de-respaldo-de-los-documentos-de-openofficeorg-en-un-email-con-un-click Artículo original del 28/02/07 en inglés en Linux.com de Dmitri Popov

Gmail ofrece unas características inteligentes que lo convierten en algo más que un servicio de correo electrónico. Podemos usar nuestra cuenta de Gmail como un visualizador de documentos, un almacén de ficheros e incluso como una agenda GTD para solucionarlo todo. También podemos convertir Gmail en una ingeniosa solución de copias de respaldo para nuestros documentos de OpenOffice.org usando una macro sencilla del OOoBasic y las propias herramientas de Gmail.

Por supuesto, OOo ofrece enviar un documento como E-mail, pero requiere demasiados pasos para usarlo convenientemente. La macro que vamos a crear nos permite enviar el documento abierto actualmente como un mensaje -email, añadiendo información automáticamente como el nombre del fichero, el tiempo utilizado, todo en background sin ninguna interacción del usuario. Esto es, literalmente, una solución para hacer backups con un click de nuestros documentos OpenOffice.org.

Antes de empezar a escribir el código que manda el documento, hay un par de cosas que hay que tener en cuenta. Primero de todo, la macro debe comprobar si el documento tiene una localización; un documento recién creado en OpenOffice.org no tiene una localización hasta que se ha guardado. Por tanto el primer paso es comprobar si el documento actualmente existe en el disco duro y entonces obtener la dirección donde se encuentra:

ThisDoc=ThisComponent If ThisDoc.hasLocation=False Then MsgBox "¡Debes guardar el documento primero!" :End End If ThisDocURL=ThisDoc.getURL()

A continuación, la macro comprueba si hay cambios sin guardar en el documento, y si los hay, los guarda:

If ThisDoc.isModified Then ThisDoc.storeAsURL(ThisDocURL, Args) End if

Para facilitar el manejo de backups, la línea de asunto de cada mensaje de correo electrónico deberia contener el nombre del fichero así como el tiempo. Describimos cómo obtener el nombre del documento actual en un artítulo anterior. Primero la macro carga la librería de utilidades, que se usa para obtener el nombre del fichero:

If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools") End If DocDir=DirectoryNameoutofPath(ThisDocURL, GetPathSeparator()) FileName=Dir(ThisDocURL, 0)

El siguiente paso es especificar la dirección de correo electrónico de destinoy el contenido de la línea de asunto:

MailAddress="backup@email.com" MessageSubject="[BACKUP] " & FileName & " " & CDateToISO(Date) & " - " &_ Hour(Time)& ":" & Minute(Time) & ":" & Second(Time)

Para obtener la fecha actual, la macro usa la función CDateToISO(), la cual obtiene la fecha en formato ISO. Para generar el "sello del tiempo", la macro usa tres funciones: Hour(), Minute(), y Second() (horas, minutos y segundos). Si planeamos usar diferentes cuentas de correo electrónico para mandar las copias de seguridad, deberemos usar un "input box" o ventana de aviso que nos pida la dirección de correo electrónico.

MailAddress=InputBox("Dirección Email")

Ahora ya tenemos todo lo necesario para crear un mensaje nuevo de correo electrónico, añadir ficheros adjuntos, y enviarlo. Inicializar el servicio de email es fácil; se puede hacer usando el siguiente código:

MailAgent=CreateUnoService("com.sun.star.system.SimpleCommandMail")

o en Windows:

MailAgent=CreateUnoService("com.sun.star.system.SimpleSystemMail")

Para hacer que la macro funcione en cualquier plataforma, debemos especificar una condición que comprueba el sistema operativo y usa la instrucción apropiada. Para ello, podemos usar la función GetGUIType, que devuelve un valor numérico que representa la plataforma actual. GetGUIType devuelve 1 si está utilizándose Windows, 3 para Mac OS X, y 4 para Linux. Usando esta función, podemos crear la siguiente condición:

If GetGUIType=1 Then MailAgent=CreateUnoService("com.sun.star.system.SimpleSystemMail") Else MailAgent=CreateUnoService("com.sun.star.system.SimpleCommandMail") End If

Nota: En Linux y Mac OS X, tenemos que especificar explícitamente la aplicación de correo electrónico que usa OpenOffice.org para enviar emails, en Herramientas -> Opciones -> Internet -> Email y especificando la aplicación deseada. Finalmente, la macro crea un nuevo mensaje, especifica la dirección de destino y el asunto, y añade el documento actual como un anexo:

MailClient=MailAgent.querySimpleMailClient() MailMessage=MailClient.createSimpleMailMessage() MailMessage.setRecipient(MailAddress) MailMessage.setSubject(MessageSubject) MailMessage.setAttachement(Array(ThisDocURL))

Una vez hecho esto, la macro puede enviar el mensaje creado:

MailClient.sendSimpleMailMessage(MailMessage, 1)

Esta instrucción envía el mensaje en background, pero si preferimos revisar el mensaje, podemos usar en su lugar la opción 0:

MailClient.sendSimpleMailMessage(MailMessage, 0)

Y aquí está la macro final:

Sub SendMailBackup() Dim MailAddress As String, MessageSubject As String Dim ThisDocURL As String, DocDir As String, FileName As String Dim MailAgent As Object, MailClient As Object, MailMessage As Object, ThisDoc As Object Dim Args()

 ThisDoc=ThisComponent If ThisDoc.hasLocation=False Then MsgBox "¡Debes guardar el documento primero!" :End End If ThisDocURL=ThisDoc.getURL()

 If ThisDoc.isModified Then ThisDoc.storeAsURL(ThisDocURL, Args) End if

 If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then GlobalScope.BasicLibraries.LoadLibrary("Tools") End If

 DocDir=DirectoryNameoutofPath(ThisDocURL, GetPathSeparator()) FileName=Dir(ThisDocURL, 0)

 MailAddress="backup@email.com" MessageSubject="[OOO_DOC_BACKUP] " & FileName & " " & CDateToISO(Date) & " - " &_ Hour(Time)& ":" & Minute(Time) & ":" & Second(Time)

 If GetGUIType=1 Then MailAgent=CreateUnoService("com.sun.star.system.SimpleSystemMail") Else MailAgent=CreateUnoService("com.sun.star.system.SimpleCommandMail") End If MailClient=MailAgent.querySimpleMailClient() MailMessage=MailClient.createSimpleMailMessage()

 MailMessage.setRecipient(MailAddress) MailMessage.setSubject(MessageSubject) MailMessage.setAttachement(Array(ThisDocURL))

 MailClient.sendSimpleMailMessage(MailMessage, 1) End Sub
Gmail filter  
Gmail filter - click to enlarge

Cuando ya tenemos hecha la macro, podemos crear un filtro en Gmail que nos añada la etiqueta a estos emails. Nótese que la instrucción que define la línea de asunto incluye la palabra clave [OOO_DOC_BACKUP]. Esto nos permite crear fácilmente un filtro en Gmail. Vamos a nuestra cuenta de Gmail y pulsamos "Crear un filtro". Escribimos en el campo Asunto [OOO_DOC_BACKUP] y pulsamos el botón "siguiente". Marcar aplicar etiqueta seleccionando una existente o creando una nueva (por ejemplo, "backup") y pulsamos el botón "Crear Filtro" para guardar el filtro. Desde ahora, todos los correos de copias de seguridad desde OpenOffice.org usando la macro creada se nos marcarán con el filtro especificado, y podremos manejarlos fácilmente en Gmail. Esto es todo. Asignamos la macro creada a un atajo de teclado o creamos una nueva entrada de menú, y estará lista nuestra solución para enviar los backups por email con un click. Dmitri Popov es un escritor freelance cuyos artículos han aparecido en revistas de informática en Ruso, Inglés, Alemán, y Danés .

Comments

]]>
Thu, 01 Mar 2007 13:28:42 +0200
Cómo explicar el DRM a tu padre http://itaca.nireblog.com/post/2007/02/18/como-explicar-el-drm-a-tu-padre http://itaca.nireblog.com/post/2007/02/18/como-explicar-el-drm-a-tu-padre Artículo original en inglés, de Eliot Van Buskirk, visto en All about Linux.

 

"Mi amigo John estaba buscando una manera de explicar el problema con los derechos digitales a su padre y amigo nuestro, que no ve el problema. Recopiló una lista de ejemplos de problemas relacionados con el DRM para ayudar a la gente a entender el DRM.

1. Quiero ver una película egipcia para la clase de mis estudios orientales. Pero está codificada para que no se pueda ver en mi reproductor DVD, en un esfuerzo por parar la piratería. Ahora tendré que hackear mi reproductor de DVDs y quebrantar la ley para poder verla. La película no está publicada en los Estados unidos. Es la única versión que existe. Al no estar publicada en USA, y al ser para propósitos académicos, puedo hacer copias para mis compañeros de clase. Es lo justo. Pero desde que tengo que quebrantar el DRM para copiarla -- quebranto la ley de cualquier forma.

2. Mi madre compró un teléfono que tenia un "reproductor de música" de Verizon. El fabricante (LG) creó un gran teléfono para escuchar todo tipo de música. Verizon bloqueó el teléfono para que únicamente se pudiera escuchar música de la tienda de música de Verizon. Si hackeo el teléfono de mi madre, que ella compró legalmente, para que pueda escuchar la música que es legalmente suya porque la compró en un CD, estaría quebrantando la ley al modificar el esquema DRM.

3. En la situación Comcast, la MPAA (Asociación Cinematográfica de América) y la RIAA (Asociación de la Industria Discográfica de Estados Unidos) están aprendiendo a la fuerza con los ISPs que tienen miedo de acciones legales. Este temor está provocando que los ISPs hagan un análisis de beneficios y adopte políticas que están parando el desarrollo de Internet.

Están cerrando el acceso a la gente sin buenas razones. No les puedo demandar por todas las multas en el acuerdo del servicio, y si pudiera tendría que estar probablemente en Delaware. La gente está usando banda ancha para distribuir software perfectamente legal bajo licencia Creative Commons. (En este caso Linux).

Es necesario para la gente poder intercambiar ficheros para desarrollar el software. La infraestructura Comcast probablemente depende fuertemente de este software. Hasta ahora han estado bloqueando su desarrollo porque no les molesta el filtrado ilegal de sospechosos.

El ISP comienta a bloquear "comportamientos sospechosos" y hace la vida difícil a gente como a mí.... Garantizado, Comcast es parte de culpa en esta situación, pero puedo enviarte otros 100 enlaces con historias similares. Comcast está aterrorizado por los titulares de copyright, y las leyes draconianas que nos clavan en los congresos y son copiadas por otras naciones son injustas para el consumidor ...

4. La Democracia se ha cultivado por la comunidad de código abierto durante un tiempo. Es una combinación reproductor de Video / lector RSS / torrent downloader. El concepto es: Libero un video diario/semanal desde mi servidor.

Las 10 primeras personas se lo bajan de mi servidor -- las siguiente 100 personas lo hacen al estilo torrent. De esta manera, a medida me hago popular, no saco comisión por el coste del ancho de banda desde una localización.

Se distribuye el ancho de banda hacia la red, que es fácilmente absorbida. Los ISPs están intentando bloquear los torrents porque la MPAA se apoyan en ellos para parar la violación de copyright.

Pero la democracia no es sobre el pirateo de películas - Es sobre elimiar el coste de la distribución. Si puedes elegir de entre 500 películas disponibles gratuitamente via Creative Commons, ¿porqué vigilan su éxito?

Están entorpeciendo las nuevas tecnologías en nombre del copyright. Es insano. Y todo esto se mueve bajo el radar por lo general.

5. Microsoft vende un Zune. El Zune comparte música, pero sólo puedes oir la música compartida durante 3 días cuando es compartida, está envuelta en un esquema DRM. Si estoy en una banda, y libero mis canciones bajo licencia creative commons, y te la bajas y la pones en un Zune -- estás quebrantando la licencia creative commons.

No hay manera de decirle al Zune "no protejas esta canción". No quiero demandar a mis fans por encerrar la música en DRM, y no tengo los recursos para demandar a Microsoft por quebrantar la licencia CC. Pero la RIAA puede demandar diez años.."

¿Alguien puede pensar en otros ejemplos que se podrían usar para informar a la gente sobre los problemas con el DRM?

Comments

]]>
Sun, 18 Feb 2007 16:12:15 +0200
Editando alternativas en Debian gráficamente con galternatives http://itaca.nireblog.com/post/2006/12/27/editando-alternativas-en-debian-graficamente-con-galternatives http://itaca.nireblog.com/post/2006/12/27/editando-alternativas-en-debian-graficamente-con-galternatives Artículo original "Editing Debian alternatives graphically with galternatives". 

Autor Azerthoth 27 Dic 2006

¿Alguna vez has estado manipulando bajo el capó únicamente para descubrir más tarde que explotaba uno por defecto?

Digamos tu navegador web por defecto, que cuando haces click a email se abre el Firefox en lugar de Konqueror o vice-versa.

Bien, a mi me pasa. Aqui veremos como arreglarlo, gráficamente.

¿Cómo arreglamos estas pequeñas cuestiones?

La respuesta estándard es ir a la línea de comandos y actualizar la "alternativa" correcta.

Eso si podemos recordar el paquete alternativo correcto o recordar el comando para que nos salgan los paquetes alternativos.

Ooops no puedo recordar porque no es algo que haga regularmente, es hora de ir a IRC y ver si alguien se siente generoso suficiente para ayudarme.

No, silencio mortal. OK, me queda google.

Encuentro que puedo echar un vistazo en /etc/alternatives/ y encuentro la opción correcta y ejecuto:

update-alternatives --config [package]

¿No podría alguien por favor implantar una interfaz gráfica para este proceso para los que simplemente queremos que las cosas funcionen?

Quiero cambiar mi navegador (o emulador de terminal por defecto, entorno X, etc...) a otro que me guste.

Por supuesto que se puede.

Introduce galternatives y haz que las pesadillas de configurar desaparezcan.

apt-get install galternatives

Ahora con un menú rápido y fácil y un par de botones se hacen los cambios en la configuración del sistema en el tiempo que tardamos en cambiarlo por la línea de comandos.

Ahorramos tiempo que acelera estos pequeños cambios, y también combina todo en un simple comando en lugar de un manojo completo de comandos no tan simples.

Espero esto ayude a unos pocos, definitivamente aumentó la velocidad con la que hago estas cosas.

Y si ves que alguien pregunta en #debian , podemos indicarle galternatives.

Comments

]]>
Wed, 27 Dec 2006 19:22:14 +0200
Cálculos desde la línea de comandos usando bc http://itaca.nireblog.com/post/2006/12/10/calculos-desde-la-lanea-de-comandos-usando-bc http://itaca.nireblog.com/post/2006/12/10/calculos-desde-la-lanea-de-comandos-usando-bc  

Artículo original en inglés Si como yo, haceis la mayoría de trabajo desde la línea de comandos, usando vim para editar ficheros, mutt para el correo electrónico, cd/ls/mv/find/etc en lugar de un gestor de ficheros, entonces os molestará tener que usar una calculadora GUI para hacer mayormente cálculos simples. Una característica útil de calcular desde la línea de comandos es que puedes ver lo que has escrito. Por ejemplo, algunas veces cuando entramos un cálculo complejo y largo (tanto GUI como en la calculadora de mano), algunas veces olvidamos si hemos introducido todos los números o hecho los cálculos en el orden correcto. Este artículo muestra cómo efectuar cálculos estándar en la línea de comandos incluyendo suma, resta, multiplicación, división, raiz cuadrada, potencias, conversión de decimal a hex, decimal a binario, hex a decimal, y binario a decimal. También introduce brevemente usando bc en modo interactivo y como escribir ficheros para usar con bc para operaciones frecuentemente repetidas. Hay una mención al uso de Google para realizar cálculos. Termina con un pequeño reto para testear el poder de tu CPU. Otras ventajas de usar bc:

  • bc se incluye con (todas?) las distribuciones Linux como estándar, así como (otra vez, casi todas) las Unix.
  • Los resultados de cálculos en algunos formatos propietarios de bc tienen hasta 99 dígitos decimales antes y después del punto decimal. Este límite se ha superado mucho en GNU bc. No se cuál es el límite, pero al menos muchas, muchas decenas de miles. Ciertamente es más que cualquieri calculadora basada en GUI de las que he usado.
  • Te encuentras a tí mismo trabajando en un entorno donde simplemente no tienes acceso a GUI.
  • La sintaxis para sumas básicas es casi idéntica a la función de calculadora de Google, con lo que puedes aprender como usar dos utilidades de una sola vez!

bc es un preprocesador para dc. Lo útil sobre bc es que acepta como entrada desde ficheros y desde entrada estándar. Esto nos permite dirigir los datos para hacer cálculos rápidos.

La mayoría de estos ejemplos les sigue una simple fórmula.

Suma

$ echo '57+43' | bc
100

Resta

$ echo '57-43' | bc
14

Multiplicación

$ echo '57*43' | bc
2451

scale

La variable scale determina el número de dígitos que siguen al punto decimal en tu resultado. Por defecto, el valor de la variable scale es cero. (Salvo que usemos la opción -l en cuyo caso por defecto vale 20 posiciones decimales. Más sobre -l más adelante.) Esto se puede configurar declarando scale antes de hacer los cálculos, como en el siguiente ejemplo de división:

División

$ echo 'scale=25;57/43' | bc
1.3255813953488372093023255

Raiz cuadrada

$ echo 'scale=30;sqrt(2)' | bc
1.414213562373095048801688724209
Esto supera a la función calculadora de Google la cual solo calcula el resultado con 8 posiciones decimales. A pesar de que esta función de calculadora de Google tiene esta limitación de 8 posiciones decimales, permite números imaginarios como respuestas.

Potencia

$ echo '6^6' | bc
46656

Paréntesis

Si habeis leído "El número de la Bestia" de Robert Heinlein, recordareis que el número de universos paralelos en la historia es igual (seis elevado a seis) a la potencia de seis. Si intentamos calcular esto: $ echo '6^6^6' | bc Obtendremos una pantalla llena de números (unos 37374 dígitos), en lugar del
10314424798490535546171949056
que esperábamos. Si estamos usando una versión no-GNU de bc, seguramente obtendremos algo como:
exp too big
empty stack
save:args
La calculadora de Google obstaculiza también '6^6^6'. Buen GNU. Esto es porque escribiste la pregunta equivocada. $ echo '(6^6)^6' | bc Mientras que lo que escribiste se interpretó como: $ echo '6^(6^6)' | bc lo que es un número completamente diferente. Por tanto la posición de los paréntesis (brackets para nosotros) es muy importante. Uso brackets para separar los diferentes componentes de mis sumas siempre que es posible, elimina cualquier posible duda de que obtenga una respuesta errónea. Considera los siguientes cálculos: $ echo '7+(6*5)' | bc $ echo '7+6*5' | bc $ echo '6*5+7' | bc Todos dan la misma respuesta, 37, pero habría escrito el primer cálculo, salvo por supuesto, si quisiera decir: $ echo '(7+6)*5' | bc O ponerlo de otra forma: $ echo '13*5' | bc lo que da 65.

obase e ibase

obase e ibase son variables especiales que definen la base de entrada y de salida. Justifica obase valores entre 2 y 999, a pesar de que nada mayor que 16 vale la pena para mi! Justifica ibase valores entre 2 y 16. Algunos ejemplos lo explicarán mejor.

Convierte de decimal a hexadecimal

Aqui estamos convirtiendo 255 de base 10 a base 16: $ echo 'obase=16;255' | bc
FF

Convierte de decimal a binario

Y aqui estamos convirtiendo el numero 12 de base 10 a base 2: $ echo 'obase=2;12' | bc
1100
Lo que me recuerda un viejo chiste: Hay 10 clases de gente en el mundo -- aquellos que entienden binario, y los que no. Lo que nos lleva al siguiente ejemplo:

Convierte de binario a decimal

Aqui estamos convirtiendo el número binario 10 a base 10 (decimal). $ echo 'ibase=2;obase=A;10' | bc
2
Nótese que la obase es "A" y no "10". Lo siento, tenías que aprender algo de hexadecimal. La razón es que si hemos configurado la ibase a "2", y ahora intentamos usar "10" como valor para la obase, nos quedará en "2", porque "10" en base 2 es "2". Por lo que necesitamos usar hexadecimal para "salir" del modo binario. Bueno, esto era para explicar el chiste; ahora un poco más mezclado: $ echo 'ibase=2;obase=A;10000001' | bc
129

Convierte de hexadecimal a decimal

$ echo 'ibase=16;obase=A;FF' | bc
255
Una vez más nótese el uso de "A" para indicar base 10, debido a que "10" en hex (base 16 - el valor ibase) es 16.

Breve introducción al modo interactivo

Podemos ejecutar bc en modo interactivo: $ bc Si estamos usando GNU bc, obtendremos el siguiente mensaje:
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
Seguido de un promt en blanco. Si queremos obtener directamente el promt en blanco, basta con usar la opción -q , la cual arranca bc en modo silencioso, evitando la bienvenida habitual de GNU bc: $ bc -q Usando lo básico que hemos visto a través de los ejemplos anteriores, entramos un cálculo: scale=5 57/43 1.32558 Y escribimos quit para salir del modo interactivo de bc.

Uso de bc con scripts del shell

Podemos usar variables con bc, lo que es muy útil en los scripts: $ FIVE=5 ; echo "$FIVE^2" | bc
25
Nótese el uso de las dobles comillas para preservar el valor de la variable $FIVE.

Una breve introducción al uso de bc con ficheros

Usando bc con ficheros nos permite repetir cálculos complejos, una y otra vez, un poco como usar una hoja de cálculo para hacer los mismos cálculos cambiando las cantidades... pero más rápido. Aquí hay un ejemplo sencillo:
scale=2

/* C-style comments
   are allowed, as are spaces */

print "nConvert Fahrenheit to Celsiusnn"
print "Temperature in Fahrenheit: " ; fah = read()
print "n"
print "Equivalent Temperature in Celsius is: "
(fah - 32.0) * 5.0 / 9.0
quit
Creamos y guardamos el fichero, y luego lo ejecutamos de la siguiente forma: $ bc -q filename Convertimos Fahrenheit a Celsius Temperatura en Fahrenheit: 61 La temperatura equivalente en Celsius es: 16.11 Nótese que este ejemplo es con GNU bc. Otras versiones (proprietarias) de bc pueden tener unos requerimientos de sintáxis más severos. Algunos bcs no permiten el uso de print o read, por ejemplo, con lo que hemos de editar nuestro fichero antes de cada cálculo. No muy útil.

Un reto rápido para tu PC (sólo GNU bc)

Si quereis testear la velocidad comparativa de vuestro PC, provad este desafío: usad bc para calcular Pi a 5000 posiciones decimales. La idea de este reto viene de este gran artículo en Geekronomicon. Si realmente quieres colapsar tu máquina por una hora (o más), puedes probar el reto de "Pi a 25000 posiciones decimales" del antes mencionado Geekronomicon. Primero, para poner las cosas en perspectiva, aqui hay algo de información sobre mi CPU: $ cat /proc/cpuinfo | egrep "model name|MHz"
model name      : AMD Athlon(tm) 64 Processor 3500+
cpu MHz         : 2211.346
Nótese el uso (abajo) del comando bc -l -q. -l carga la libreria math requerida para el uso de "a" (arco tangente) en los cálculos para Pi. Podeis aprender más sobre las funciones de librerias de matemáticas en el manual de bc command manual. No estoy seguro del efecto que la opción -q (modo silencioso, sin que salga el mensaje de bienvenida) tiene en nuestro test, pero no creo haga daño. $ time echo "scale=5000; 4*a(1)" | bc -l -q
3.141592653589793238462643383279502884197169399375105820974944592307
...
...
...
73774418426312986080998886874132604720

real    0m44.164s
user    0m44.099s
sys     0m0.008s
44.099 segundos! No está mal. Imagino que algunos colegas de Gentoo estarán interesados en ver qué diferencias en la velocidad de bc tienen sus optimizaciones de tiempo de compilación. FWIW, la distro que elegí es Arch Linux. 4*a(1) es una aproximación de Pi, pero es buena! -->

Enlaces de utilidad

GNU bc manual Google's calculator function

Comments

]]>
Sun, 10 Dec 2006 12:25:31 +0200
Anunciados los ganadores del Concurso de plantillas para formato documento abierto del Openoffice.org http://itaca.nireblog.com/post/2006/12/08/anunciados-los-ganadores-del-concurso-de-plantillas-para-formato-documento-abierto-del-openofficeorg http://itaca.nireblog.com/post/2006/12/08/anunciados-los-ganadores-del-concurso-de-plantillas-para-formato-documento-abierto-del-openofficeorg Noticia original en inglés en LinuxElectrons

Miércoles, 06 de diciembre de 2006 @ 08:29 AM CST Contribución de: Tommy Garrison, NY –

Worldlabel.com financió la competición de plantillas para el proyecto Openoffice.org.

Como miembro de la ODFalliance.org, Worldlabel.com se dedica al estándar ODF y a Free Open Software.

"Financiamos esta competición porque la popularidad de OpenOffice.org está creciendo rápidamente y su formato de documento abierto se está convirtiendo en un estándar. Desde que la competición se anunció en octubre, el estándar ODF ha sido oficialmente publicado por la organización internacional de estándars bajo el nombre ISO/IEC 26300:2006. Brasil, Italia, India y Polonia han anunciado también que el ODF será el estándar en sus países junto con Bélgica, Malasia y otros", afirmaba Worldlabel.com, Worldlabel.com felicita a todos los ganadores y a la comunidad por participar y hacer de este concurso un éxito.

"Fue un gran honor financiar una competición para el proyecto de open source más grande. Estamos muy satisfechos de que algunas plantillas muy útiles hayan sido presentadas a la comunidad para compartirlas." dijo Russell Ossendryver, Director General de Worldlabel.com El concurso ha resultado ser un trabajo superior e innovador.

"Algunas de las plantillas muestran justamente cuán avanzado y flexible es el formato de documento abierto de Openoffice.org tanto en el procesador de textos como en la hoja de cálculo. Las plantillas ganadoras y muchos otros rompen el mito de que Openoffice.org no puede hacer funciones de edición avanzadas como Microsoft Word o Microsoft Excel. Es obvio que Openoffice.org con el tiempo es más que una alternativa libre a MS Office pero un competidor extremadamente digno" dijo Russell Ossendryver

La plantilla ganadora, una plantilla Thesis para el Writer diseñada por Matthias Ansorg - el detalle global, comprensión, complejidad, presentación, y uso de diferentes elementos y funciones.

El participante no solo incluyó elementos de dibujo y organización de hiperenlaces pero también un CD, y el uso de listas, texto enumerado y los colores que es excepcional. La implementación de la Bibliografía y el uso de ella fue excelente.

El ganador en segundo lugar, un calendario perpetuo en Calc que hace uso avanzado de fórmulas y es una gran plantilla para todos los usuarios.

El ganador en quinto lugar, Mapcharts (plantilla de Calc) por la complejidad e innovación de la plantilla. Demostró cómo uno puede añadir a Openoffice.org y crear muchas otras aplicaciones útiles y documentos ODF avanzados.

Worldlabel.com tomó parte en esta competición juntamente con el Proyecto de Documentación de OpenOffice.org y se ha comprometido para la cometición de 2007.

"Queremos seguir añadiendo plantillas ODF al repositorio de plantillas de Openoffice mientras el estándar ODF gana en popularidad" dijo Russell.

OpenOffice.org existe como comunidad de código abierto para el interés y compromiso de sus usuarios y miembros del proyecto.

Las plantillas del concurso de 2006 están disponibles online.

Comments

]]>
Fri, 08 Dec 2006 22:03:57 +0200
IV Jornadas de Software Libre en Elx (Elche) http://itaca.nireblog.com/post/2006/12/03/iv-jornadas-de-software-libre-en-elx-elche http://itaca.nireblog.com/post/2006/12/03/iv-jornadas-de-software-libre-en-elx-elche Jornadas de Software Libre" en el Centro de Congresos de Elche que organiza Kleenux, así que paso a resumir un poco los contenidos que se han tratado, mientras esperamos suban los vídeos y fotos a la web. Resumen:
  • En primer lugar Jesús David Navarro dio una charla sobre juegos bajo gnu/linux
  • a continuación hubo en una sala otra sobre GNU Privacy Guard (1) por René Mérou, mientras en la otra sala Andrés Antón, empresario de Elche, daba la de "Empresa y el Software Libre, mito o realidad", en la que hablaba sobre las aplicaciones de software libre, presentando tres ejemplos prácticos de implantación de s.libre en su propia empresa.
  • Siguió una sobre la remasterización de Knoppix (2), cómo crear live-cds para educación, con un repaso de las distintas aplicaciones existentes.
  • A la tarde en la charla "Un día con Linux" se trataba de dar respuesta a las siguientes cuestiones: ¿Es normal este modelo y este sistema? ¿Existen alternativas? ¿Satisfarán esas alternativas las necesidades de un usuario doméstico? ¿Qué complicaciones y problemas puedo encontrar si decido usar estas otras? Para luego dar un vistazo a las alternativas en linux a los programas más conocidos
  • al mismo tiempo se daba en la otra sala la charla sobre el proyecto Bulmagés (3).
  • Terminó la jornada con una mesa redonda (4), en las que se preguntaron si la empresa está apostando por el software libre, y qué significaba el software libre para cada uno de los ponentes.
Al haber algunas charlas al mismo tiempo en dos salas distintas, sólo se podía asistir a una de ellas, así que paso a contar un poco de qué fueron las que pude asistir. 1. La charla sobre GnuPg, impartida por René Mérou, comenzó con un ejemplo sobre cómo se intercambiaban mensajes cifrados antiguamente en tiempos de guerra, como por ejemplo con los submarinos, para seguir con la necesidad de generar unas claves y con caducidad (ver artículo en Bulma)
La privacidad y el trato humano son derechos fundamentales, y problemas como los que se mencionan a continuación, no los conoce la mayoría de la gente, hace falta más divulgación. Por ejemplo los siguientes problemas:
* Texto borrado - simplemente se pueden recuperar con control+z * timofónica y mis datos
* las compañías telefonía móvil y el "Siiii, nno se preocupe", pero no te borran nooooo
* los bancos y las listas negras...
* y por último los títulos de los DVD , canciones etc, que viajan por internet como que los estás viendo/bajando tú...
La gente no lo sabe, y hace falta divulgarlo para que se sepa..
A esos sitios que juegan con tus datos, muchas veces no hacen caso hasta que les citas artículos legales. Y muchos se preguntan, ¿porqué es útil tener criptografía? Total no soy ningún terrorista ni mando nada importante...
* Los comercios, explicarles las ventajas técnicas - como enviar un password, la navegación logeada, o la obligación de entregar clave privada si la piden. ¿Nos llaman paranoicos? Sencillamente hay que vigilar más de lo normal, como en temas de seguridad. * las funcionalidades e inseguridad * Coste de tus datos en internet
Algunas de las imágenes mostradas en la ponencia:
- Imagen de gente al aeropuerto con trajes transparentes (hay pantallas que ya ven a través de nuestra ropa....)
- El biochip ya existe
2. Creación de Live-CDs para educación a partir de KNOPPIX, por Víctor Alonso, que nos explicó lo que es el Knoppix y como crear live-cds para el sector de educación. Comentó las ventajas del Software libre en un colegio: un cd-live se lo pueden llevar a su casa. Igual que con los libros, apuntes, que se pueden llevar de casa al colegio, con un software propietario no se puede. Es necesario tener un live-cd para dar a los alumnos y que practiquen en su casa. Otras ventajas:
*detección hardware *multilenguaje *KDE por defecto, pero tiene otros más *usabilidad *muchos programas *instalable en disco duro *innovador: - unionFS - imagen persistente
A continuación pasamos a ver una visión rápida de las aplicaciones educativas bajo gnu/linux. Faltó tiempo para poder ver la remasterización de knoppix al completo. Nos dió unas instrucciones para poder hacerlo fácilmente, incluso sin necesidad de muchos conocimientos de linux. (manual de remasterización del knoppix)
3. Proyecto Bulmagés Comenzó con una explicación sobre Iglues (Iniciativa de Gestión Libre Universal para Empresas y Sociedades) y sobre la problemática en la pequeña y mediana empresa (demanda de servicio): coste de un desarrollo completo y la falta de garantías en implementaciones específicas. Pero con software libre, el coste es asequible, se puede cambiar de proveedor de servicios sin perder el trabajo realizado, y hay más garantías de continuidad. Propuesta organizativa: - software altamente modular y extensible - plugins - un único árbol de compilación por desarrollador - repositorios combinados por parte pública y privada Pasar de QT3 a QT4 Del proyecto Bulmagés hizo una demostración del funcionamiento de BulmaCont y BulmaFact, aparte comentar los hilos y wiki del mismo. 4. Mesa redonda Compuesta por Juanjo Martínez (Kleenux, consultor, analista y programador), René Mérou (Bulma, Bulmagés, programador y profesor), Maxi Pérez (Kleenux, profesor), Jesús David Navarro (diseñador web) y Andrés Antón (director comercial empresa de Elx). La encontré tan amena que transcribo aquí la mayor parte de las preguntas y respuestas para los que no pudieron asistir: Modera Maxi Pérez, comenzando con una pregunta: ¿La empresa está apostando por el soft libre? ¿qué tipo de empresa?
René comenta hay muchos tipos de empresas, ej Google trabaja con soft libre, Boeing, Nasa, IBM, Sony etc...(de las grandes). Empresas medianas, servidores internet con apache, y luego la empresa de "al lado" tipo la panadería, usando openoffice, haciendo cd-roms live para regalar en los colegios, acercando a profesores y alumnos el software libre, EL SOFTWARE LIBRE ES EL FUTURO. Andrés Antón comenta que en algunas áreas ya se usa hace años, servidores por ejemplo, introducido por gente con altos conocimientos tecnológicos. Y ahora la batalla está en los escritorios para el usuario final. Hacer incapié en la usabilidad, en no perder una hora para configurar algo delante un escritorio.
Maxi pregunta que es lo que conoce la mayoría de gente, que si el pequeño y mediano empresario se animará a implantar/usar el software libre en sus empresas - él lo duda.
Jjm contesta que falta formación. Cuando tienes un empleado, porqué sabe usar windows y no linux, ¿tan difícil es? Es una pérdida de productividad tener que estar reiniciando un sistema una y otra vez (por ej. win98) y no tener seguridad contra virus. Porqué no se enseña software libre en los centros de estudio, por ejemplo en ofimática, falta formación. Comenta un caso de una reserva que tenía que hacer y le exigían hacerlo con outlook.
Maxi comenta es más un problema de resistencia al cambio. Especifica la pregunta pidiendo si hay más empresas tras el software libre y René le contesta cada vez hay más. ¿Le llega al empresario mediano y pequeño sobretodo? ¿Saben algo del software libre?
Jjm pregunta si saben diferenciar libre de privativo y JesusDa contesta que no lo perciben - dicha diferencia - porque la percepción que se tiene sobre el soft privativo es cero. Si necesitan un programa se lo bajan craqueado. Una de las bazas para que asimilen lo que es soft libre es que sepan que significa soft privativo. Junto con Jjm comentan que entonces se trata de eso: que se sepa y se cobre dicho software y vean la diferencia de lo que se gastan en licencias y equipos, para que busquen otra cosa.
El moderador pregunta a todos en general: "¿Qué es para tí el software libre?"
Contesta primero Jjm, para el que el software libre es al principio una cuestión práctica, va bien, va mejor. Pero con el tiempo uno se va dando cuenta de la ética que hay detrás, y se entiende la informática ya no a nivel de usuario, sino a nivel de si un programa - el soft privativo corta los derechos.
Para Andrés son programas de código abierto y de usuarios y empresas que ceden ambas partes obteniendo beneficios mútuamente. Se paga por un servicio a los programadores de soft libre y existe un intercambio mutuo ahorrándose en licencias. JesusDA - contesta que es eso y sobretodo hace incapié en la libertad. No usarlo porque lo usa todo el mundo como borreguismo. Al investigar un poco lo que es el software libre ves las comunidades y puedes contactar con los propios desarrolladores, y ves que un programa puede mejorarse y se lo comunicas al programador y a la siguiente versión salen dichas modificaciones: el sentido comunitario que tiene el soft libre. Para René el software libre es: para el corazón es ciencia. Lo que le motiva es la ciencia, p.e. construyendo para un futuro, compitiendo y compartiendo errores y solucionándolos. Desde el punto de vista mental es libertad, pasión, creatividad, compartir, comunidad, construir, emoción, diversión. El software libre es hacer cosas para que todos podamos usarlas, contra la gente que no quiere que eso funcione (M$).
Maxi dice que eso no vende, habla del libro "La ética hacker": el empresario debe plantearse la duda, y elegir entre la ética y la libertad. Si eso lo dices a un empresario ....
René y jjm no están de acuerdo. Este último dice que lo que es para uno el software libre no tiene porqué ser lo que se vende a un empresario.
El moderador pregunta cómo convencer a una empresa. Cómo vendérselo. Falta formación tecnológica en las pequeñas y medianas empresas. No se plantean dicha necesidad sino que siguen con lo que hay.
Jjm dice que funcionan con lo que hay, no con lo que le dan. Una pyme se deja asesorar por "profesionales" que siguen funcionando con esquemas de software privativo. Andrés Antón comenta podemos ser buenos desarrolladores de soft libre pero somos muy malos vendedores, a lo que le contesta Jjm que no somos vendedores. Andrés dice que debería de haber la parte de producción, la parte de comercialización y la de servicio. Y el software libre es servicio. Las empresas de soft libre se han de adaptar y aprender a vender servicios. Al no cobrar licencias puedes vender más caros tus servicios. Y encima le saldrá más barato.
Maxi: hay que crear esa necesidad, y el pequeño y mediano empresario tiene que pensar que necesita una política de empresa. Pero que no acude al profesional de software libre porque no se ofrecen los profesionales de software libre.
Jjm no cree se deba poner en la "tarjeta de presentación" que vendes soft libre. Sino que vendes un servicio, sin especificar si es libre o no.
Maxi dice que las empresas pequeñas deberían colaborar para aportar lo que buscan las grandes empresas.
Y Andrés - que tiene una empresa calzado - comenta un ejemplo de una suela que quisieron vender hace tiempo. Y una persona solamente creyó en el proyecto. Que la empresa de soft libre ha de venderse. René comenta que son estrategias y que hay mejores y peores vendedores. Andrés añade que muchos empiezan a usar soft libre porque ven que la competencia lo usa. René comenta el efecto de la imitación y Maxi que no cree en ello. JesusDa comenta que no se extiende tanto el software libre porque el privativo tiene efecto de imitación más fuerte. El libre no pone dinero en publicidad. Sale cualquier programa y se vende antes el privativo. René comenta que se invierte mucho en publicidad y se debería invertir más en desarrollo.
Maxi dice que en el momento que una empresa fuerte apueste por el soft libre, cuantas vendrán detrás, a lo que Jjm añade que no podemos ir con mismas reglas soft privativo hablando de libertad y osos amorosos....
Andrés y René hablan de entregar algo que funcione, y con unos valores. Pero según JesúsDA no se juega con las mismas reglas, así que hay que atacar las del software privativo, por ejemplo el empresario pasa de la ética, mejor entrar con lo que está pagando por privativo, ilegalidades, empleados chivatos, .... que no se piensen windows y demás programas es todo gratuito. Proponer instalar sistema ya sin esas desventajas y por ahí podremos abrir una vía. A una institución venderle las bondades. René insiste en que vender es independiente del proveedor de ese software y será más efectivo (jjm), a lo que Andrés sugiere tres ejes: ofrecer más servicio y mejor por menor o = coste, la personalización o traje a medida. Problema según el moderador: como cuando buscaba patrocinadores para las jornadas, piensa una empresa necesita soluciones grandes, tipo consultoría. Un proveedor que dé soluciones diversas. ¿Cuál es el perfil de una pyme y que busca? Jjm contesta que una pyme busca soluciones a sus problemas. Jesús añade que adecuar tecnológicamente a los empleados también, y modificar aplicaciones existentes, vender el traje a medida. Comentan entre todos que han de existir unos problemas para poder ofrecer resolvérselos. "Vengo a ofrecerle solución a sus problemas", "tú tienes unos problemas de gestión y este soft te los va a solucionar". Procurar usar su mismo lenguaje para explicárselo. Y según Andrés, la empresa que se plantee vender soft libre tiene que tener un equipo con conocimientos multidisciplinario, que sepa tanto uno como otro.
Moderador: una pyme cualquiera, le ofrece web, servidor correo, aplicaciones, datos, varios servidores. ¿Es lo que se le ofrece?
Jjm contesta que no hay que venderle tanto, el empresario pequeño no necesita un servidor si solo quiere cobrar al cliente final, o simplemente imprimir tickets. Jesús sugiere presentar doble presupuesto, uno con software libre y otro con s.privativo y que comparen añadiendo las renovaciones anuales de licencia. Explicando cualidades de ambos. No dedicarse exclusivamente a soft libre.
Maxi le pregunta a Andrés sobre la resistencia al cambio, esa dificultad a un soporte continuado, y la formación. Las empresas de soft libre no ofrecen formación.
Contesta Andrés que si para buscar a uno tienes que formar a 10... En el privativo hay una formación estándar, todos conocen el office y se lo ahorran en formación. La solución es que llegue la nueva generación formada con soft libre.
El moderador resume los grandes errores:
- Sembrar la duda - presentar y vender nuevas tecnologias con apariencia de consultoria y ofreciendo formación - evitar grandes errores como que el soft libre es dificil de vender - no se tiene en cuenta el soft libre como producto de venta.
Se abrió un plazo para que los asistentes pudieran hacer las preguntas que tuvieran y con ello finalizaron las jornadas. Conclusión Disfruté en todas las charlas que pude asistir. Muchísimas aplicaciones que sólo se vieron por encima me hubiera gustado se hubieran dado más a fondo, pero no había más tiempo. Voto por la entrada a tope del software libre tanto en la educación como en la empresa, así como por nuestro derecho a la privacidad y la necesidad de proteger nuestros datos. Añadir que entre charlas se hizo también una signing-party con los que tenían interés en intercambiar sus fingerprint, tras la charla sobre gnupg. Encima hizo buen tiempo - incluso calor durante el día, comimos bien e hicimos algo de turismo, y la organización fué excelente, todos identificados, y todo muy bien organizado. ¿Para cuándo las próximas? ¡Gracias a todos!

Comments

]]>
Sun, 03 Dec 2006 23:57:40 +0200
Manipulando listas en OpenOffice.org Calc http://itaca.nireblog.com/post/2006/12/03/manipulando-listas-en-openofficeorg-calc http://itaca.nireblog.com/post/2006/12/03/manipulando-listas-en-openofficeorg-calc Traducción del artículo de "Manipulating lists in OpenOffice.org Calc" de

Cuando se me pide que explique el propósito de las hojas de cálculo, mucha gente piensa en primer lugar en los cálculos.

Y es verdad que las hojas de cálculo como Calc tiene cientos de funciones diferentes para desarrollar cálculos.

No obstante, probablemente la tarea más común en las hojas de cálculo son las listas de manipulación.

Calc y otras hojas de cálculo tienen pocas ventajas frente un procesador de textos cuando simplemente haces una lista.

De hecho, salvo que tengas una plantilla de hoja de cálculo en la que las celdas tengan activado la partición de palabras y control de líneas huérfanas-viudas, será mejor dejes de usar el procesador de textos si lo que tienes es media docena de artículos en la lista.

Sin embargo, así como el número de artículos en una lista se acerca al centenar y se acerca más a una base de datos, las diferentes maneras de manipular las listas en las hojas de cálculo comienzan a tener diferentes ventajas.

En Calc, las búsquedas, la impresión de elementos seleccionados, y, en menor cantidad, la privacidad, son mucho más fáciles a través del uso de controles, filtros y clases personalizadas.

Grupos de controles online

Hojas, filas y columnas pueden esconderse o mostrarse a través de los sub-menus o del menú Formato. Mientras los elementos están escondidos, ni están visibles ni imprimibles, pero se pueden seleccionar para copiar si seleccionas alrededor de los elementos.

Por ejemplo, si la columna B está escondida, se copia cuando seleccionas columnas A y C. Cuando la necesitas otra vez, puedes revertir el proceso, y mostrar los elementos otra vez.

Las celdas individuales se pueden esconder o mostrar con Formato > Celdas > Protección de Celda.

Sin embargo, si estás continuamente escondiendo y mostrando las mismas celdas, puedes hacerlo más fácilmente creando grupos de contorno, que añaden una serie de controles para esconder y mostrar las celdas en el grupo que son fáciles de usar y siempre disponibles.

Si los contenidos de las celdas tienen un patrón regular, tal como cuatro celdas seguidas de un total, podemos usar Datos > Esquema > Automático para que Calc añada controles de contorno basados en el patrón.

De otro modo, podemos establecer grupos de contorno manualmente seleccionando las celdas por grupos, luego elegimos Datos > Esquema > Agrupar en los menus de Calc.

La ventana de Grupo nos da una posibilidad de agrupar las celdas seleccionadas por filas y columnas. Cuando cerramos la ventana, los controles del grupo de contorno son visibles tanto entre las filas como las cabeceras de las columnas y los bordes de la ventana de edición.

Los controles se parecen a la estructura de árbol de un directorio de archivos en apariencia, y se pueden ocultar seleccionando Datos > Esquema > Esconder detalles. Son estrictamente para usar en línea, y no imprimen.

Los controles básicos de perfiles tienen más o menos símbolos al principio del grupo para mostrar u ocultar celdas ocultas.

Sin embargo, si uno o más grupos marcados son anidados en otro, los controles tienen botones numerados para esconder los diferentes niveles del grupo.

Si no necesitamos más un grupo, colocamos el cursor del ratón en cualquier celda en el mismo y seleccionamos Datos > Esquema > Desagrupar.

Para remover todos los grupos en una hoja, seleccionar Datos > Esquema > Eliminar.

Filtrando qué celdas son visibles

Un filtro es una lista de condiciones que cada entrada tiene que buscar para poder ser visualizada. Podemos establecer tres tipos de filtros desde el menú Datos > Filtro:

  • Los filtros automáticos añaden una lista desplegable en la primera fila de una columna que contiene comúnmente los filtros usados. Es rápido y conveniente, y, porque la condición incluye cada entrada única en las celdas seleccionadas, son casi tan útiles con texto como con números. Además a cada entrada única, los filtros automáticos incluyen la opción de mostrar todas las entradas, los diez valores numéricos más altos, y todas las celdas vacías o no, así como el filtro estándar. El único inconveniente es que son un tanto limitados. En particular, no permiten expresiones regulares, por lo que no podemos mostrar contenidos que sean similares, pero no idénticos, usando los filtros automáticos.
  • Los filtros estándar son más complejos que los filtros automáticos. Podemos establecer tantos como tres condiciones como filtro, combinándolas con los operadores booleanos AND y OR. Los filtros estándar son generalmente usados para números, a pesar de que unos pocos de los operadores condicionales, tales como = y < > pueden también ser útiles para texto. Otros operadores condicionales para filtros estándar incluyen opciones para mostrar los valores más grandes o más pequeños, o un porcentaje de los mismos. Útiles por sí mismos, los filtros estándar asumen valores añadidos cuando se usan para posteriormente refinar filtros automáticos. Son útiles principalmente para números.
  • Los filtros avanzados son estructuras similares a los filtros estándar. Las diferencias son que los filtros avanzados no están limitados a tres condiciones, y sus criterios no se introducen por una ventana de diálogo. En cambio, los filtros avanzados se introducen en un área en blanco de la hoja, luego referenciados por la herramienta de filtro avanzado para aplicarlos. Si no estamos planeando usar filtros muy a menudo, podemos elegir borrar el criterio tras usarlo. Pero si usamos filtros regularmente, podemos etiquetar el área para filtros avanzados para poder encontrarlo más fácilmente.

Clasificando registros

Una clasificación ordena las celdas visibles en la hoja.

En Calc, podemos clasificar hasta con tres criterios, uno aplicado tras el otro. Las clasificaciones son muy útiles cuando estamos buscando un artículo determinado, y llega a ser mucho más poderoso tras haber filtrado los datos. Además, una clasificación es con frecuencia útil cuando añades nueva información.

Cuando una lista es larga, es normalmente má sfácil añadir nueva información al final de la hoja, que añadir filas en los sitios adecuados.

Una vez hemos añadido información, podemos clasificarla para actualizar la hoja. Podemos aplicar una clasificación destacando las celdas, luego seleccionando Datos > Ordenar.

Las celdas seleccionadas se pueden clasificar por el orden de información de una a tres columnas o filas, tanto en orden ascendente (A-Z, 1-9) o descendente (Z-A, 9-1).

En las opciones de la ventana "Ordenar", se pueden elegir las siguientes:

  • Mayúsculas/minúsculas: si dos entradas son idénticas, una con una letra en mayúsculas se sitúa antes que otra con una letra en minúscula en la misma posición.
  • El intervalo contiene etiquetas de columnas: no incluye la cabecera de columna en la clasificación. Formatos: el formateo de una celda se mueve con su contenido. Si el formateo se usa para distinguir diferentes tipos de celdas, entonces usa esta opción.
  • Copiar resultado de clasificación en: Establece una dirección de hoja de cálculo a la que copiar los resultados de la clasificación. Si un rango es especificado y no contiene un número necesario de celdas, éstas se añaden. Si un rango contiene celdas que ya tienen contenido, falla la clasificación.
  • Orden de clasificación definida por el usuario: selecciona el recuadro, entonces elige uno de los órdenes de clasificación definidos en Herramientas > Opciones > OpenOffice.org Calc > Ordenar listas. Como se puede ver de las realmente definidas, un orden de clasificación es un tipo de lista estándar, tal como los días de la semana o los meses del año. Se pueden utilizar también para rellenar automáticamente celdas.
  • Dirección: establece si clasificar columnas o filas. Por defecto lo hace por columnas salvo que las celdas seleccionadas estén en una única columna.

Conclusión 

Los creadores de hojas de cálculo libres a menudo pasan por alto la manipulación de listas a favor de concentrarse en el desarrollo de funciones.

Este enfoque es comprensible, dada la complejidad y reto de las funciones de implementación. Sin embargo, también significa que a proyectos como Gnumeric le continúe faltando algunos rasgos sencillos de los cuales dependen fuertemente muchos usuarios.

La mayoría de usuarios probablemente utilizan menos de una docena de funciones -- pero casi todos ellos son capaces de escribir listas en hojas de cálculo.

Después de todo, las asignaciones de tareas, planificación de proyecto, los inventarios, y los grados se dan en la casa y el lugar de trabajo.

Sin duda otras hojas de cálculo libres se divulgarán para manipular listas algún día, pero, por ahora, Calc sigue siendo la única hoja de cálculo esencial para proporcionar esta funcionalidad básica.

Bruce Byfield es un periodista informático que escribe regularmente para el "Linux Journal and Newsforge".

Comments

]]>
Sun, 03 Dec 2006 18:55:11 +0200
Algunos trucos de Vim: manejo de vistas http://itaca.nireblog.com/post/2006/11/01/algunos-trucos-de-vim-manejo-de-vistas http://itaca.nireblog.com/post/2006/11/01/algunos-trucos-de-vim-manejo-de-vistas Mucha gente usa Vim, pero muchos explotan únicamente un porcentaje pequeño de sus posibilidades.

Seguro que sabes cómo hacer lo básico con Vim, pero ¿que me dices de trucos avanzados como dividir ventanas, archivar, o crear marcadores?

Con un poco de práctica, puedes aumentar tu productividad con Vim.

División de vistas con Vim

Una característica de Vim es la posibilidad de dividir el área de visualización entre dos o más ficheros, o simplemente dividir la ventana a visualizar en dos trozos del mismo fichero. La documentación de Vim se refiere a ello como vista o ventana (viewport o window) indistintamente. Puede que os sea familiar esta característica si alguna vez has usado la ayuda de Vim usando : help topic o pulsando la tecla F1. En dicha ayuda, Vim divide la vista y abre la documentación de ayuda en la vista superior, dejando el documento abierto en la vista inferior.

Referencia rápida de "atajos" para las vistas de Vim

:sp divide la ventana de Vim horizontalmente.

También se puede escribir entero como :split

:vsp divide la ventana de Vim verticalmente.

Se puede también escribir en su forma entera como :vsplit

Ctrl-w Ctrl-w Para moverte entre vistas

Ctrl-w j Para mover la vista hacia abajo

Ctrl-w k Para mover una vista hacia arriba

Ctrl-w h Para mover una vista hacia la izquierda

Ctrl-w l Para mover una vista hacia la derecha

Ctrl-w = le indica a Vim que ponga las vistas al mismo tamaño

Ctrl-w - reduce la vista activa en una línea

Ctrl-w + aumenta la vista activa en una línea

Ctrl-w q Cierra la ventana activa

Ctrl-w r Gira la ventana hacia la derecha

Ctrl-w R Gira la ventana hacia la izquierda

Si se quiere usar esta característica para otra cosa que no sea ver los ficheros de ayuda de Vim, podemos dividir la vista usando :sp, :split, o Ctrl-w n -- que hacen lo mismo, pero escribiendo :sp te ahorra unos cuantos caracteres y es más fácil de usar con argumentos, tales com nombres de ficheros.

Aunque recuerda la parte Ctrl-w, para tenerla a mano en la mayoría de operaciones con ventanas.

El comando :sp divide la vista en dos vistas iguales para el fichero que tengas abierto.

Si se quiere trabajar en dos ficheros simultáneamente, no hay problema - simplemente añade el fichero del nombre que se quiere usar: :sp nombreFichero Lo que te abrirá dicho nombreFichero en una nueva vista.

Incluso se puede añadir una cadena de búsqueda para moverse directamente al primer término que encuentre, tal cómo: :sp +/searchstring nombrefichero

Tan fácil como caerse de una rama.

¿Y si no quiero que las vistas sean iguales?

Por ejemplo, digamos quieres abrir un fichero de referencia en la vista superior, pero la mayoría de la vista esté a la vista mientras estás editando.

No hay problema, simplemente añadimos un número al comando sp, y la nueva vista tendrá dicho número de líneas: :10 sp nombreFichero

Así tendremos una vista con 10 líneas, pero ¿y si luego decides darles la misma dimensión?

Muy fácil tambíen, en lugar devolver al modo comando, podemos usar Ctrl-w = para decirle a vim que asigne un númerode líneas igual a cada vista.

Para movernos entre las vistas mientras trabajamos, usaremos

Ctrl-w j para movernos hacia abajo,

y Ctrl-w k para movernos hacia arriba.

Esto es fácil de recordar: -- Ctrl-w para el comando "ventana", y los comandos de movimiento de vim j para abajo y k para arriba.

También puedes moverte entre vistas usando Ctrl-w Ctrl-w.

Podemos aumentar o disminuir el tamaño de una vista después de haberla creado, usando Ctrl-w + o - para aumentar o disminuir respectivamente.

Si con una línea no es suficiente, se puede añadir un modificador antes del + o -.

Por ejemplo para añadir 13 líneas, usaremos Ctrl-w 13+ .

Si las vistas horizontales no lo hacen por tí, Vim también soporta dividirlas verticalmente.

Para ello usaremos :vsp o :vsplit si prefieres tal como se pronuncia.

El movimiento entre vistas verticales es similar al movimiento entre vistas horizontales, Ctrl-w Ctrl-w funciona, y en lugar de usar las teclas de movimiento j y k, usaremos las teclas de movimiento h y l para movernos hacia atrás y hacia adelante entre las vistas.

Para movernos a la izquierda de una vista, por ejemplo, usaremos Ctrl-w l .

También vale la pena mencionar que se puede abrir un fichero en una vista únicamente para visualizarlo, sin tener que editarlo.

Para ello usaremos el comando :sview nombreFichero.

Para hacerlo verticalmente, usaremos :vert sview nombreFichero.

Para cerrar una ventana tenemos diversas maneras.

La más fácil es usar el comando quit :q, o usar Ctrl-w q.

Si es la única ventana abierta con un fichero, Vim nos avisa de guardarlo si no lo hemos hecho.

También es posible rotar las ventanas, si decidimos que preferimos tener la de arriba abajo y/o al revés.

Para ello usaremos Ctrl-w r para rotar las ventanas a la derecha o abajo.

Cuando hacemos eso, por ejemplo, en una sesión de vim con tres vistas horizontales abiertas, la de arriba irá a la posición de enmedio, y la vista de enmedio se iría abajo, y la de abajo subirá a la primera posición.

Para hacerlo en dirección contraria, se usa Ctrl-w R.

Vim nos ofrece a menudo diferentes maneras de hacer lo mismo.

Por ejemplo, :sp, :split, y Ctrl-w n crean una nueva vista.

No se ha listado aquí todos los posibles comandos para hacer las mismas tareas. Con el paso de los años, he encontrado las características para dividir las vistas en Vim muy útiles. A menudo las uso para editar una columna o artículo en una vista, y para leer y copiar notas en otra vista.

Comments

]]>
Wed, 01 Nov 2006 16:45:30 +0200
Cierre de las pestañas del Firefox http://itaca.nireblog.com/post/2006/09/03/cierre-de-las-pestanas-del-firefox http://itaca.nireblog.com/post/2006/09/03/cierre-de-las-pestanas-del-firefox Visto en las listas de Bulma y procedente de un comentario en Slashdot, paso a traduciros un truco para configurar el tipo de botón que queremos para cerrar las pestañas en Firefox.

La X Roja (Botón de cierre)

- Alguna gente se sintió fustrada cuando Mozilla añadió un botón para cerrar cada pestaña como resultado de una extensión que elimina esos botones de cierre. Bien, no necesitaremos nuca más una extensión para remover esas X's, de hecho hay múltiples opciones:

  • mostrar un botón de cierre únicamente en la pestaña activa,
  • mostrar botones de cierre en todas las pestañas,
  • no mostrar ningún botón de cierre,
  • y mostrar un único botón de cierre al final de la tira de pestañas (comportamiento del Firefox 1.x.

Aquí teneis cómo configurarlo:

1. Abrir Firefox.

2. En la barra de direcciones escribir "about:config" y pulsar Enter.

3. Hacer Click con el botón derecho del ratón y seleccionar Nuevo-> Entero (New->Integer).

4. Nos saldrá un cuadro pidiéndonos el nombre (Preference Name) en el que debemos poner "browser.tabs.closeButtons" (sin las comillas). Pulsar OK para continuar

5. Ahora tenemos que seleccionar el tipo de botón de cierre que queremos:

0 - muestra un botón de cierre únicamente para la pestaña activa,

1 - muestra botones de cierre en todas las pestañas,

2 - no muestra ningún botón de cierre

3 - muestra un único botón de cierre al final de la tira de pestañas (comportamiento del Firefox 1.x).

Tras entrar el valor correspondiente a tus preferencias pulsa OK otra vez.

Comments

]]>
Sun, 03 Sep 2006 09:43:57 +0200
Enlaza listas numeradas con CSS http://itaca.nireblog.com/post/2006/09/01/enlaza-listas-numeradas-con-css http://itaca.nireblog.com/post/2006/09/01/enlaza-listas-numeradas-con-css En este artículo [en inglés] nos explican cómo enlazar las listas numéricas con CSS que por separado nunca nos cuadran los números.

Si necesitas crear una lista numerada que empiece por un número diferente de 1, aqui tienes una solución elegante.

Es muy útil si necesitas mostrar una lista en más páginas (por ejemplo si hay 100 resultados de una búsqueda y quieres mostrar 10 resultados por página).

En este caso, si estás usando una lista numerada, comenzará por el 1 en cada página, y no es una buena solución dado que saldrá así:

Página 1

  1. Division Bell
  2. Atom Hearth Mother
  3. Relics
  4. Dark Side of the Moon
  5. Wish You Were Here

Página 2

  1. The Wall
  2. More
  3. Piper at the gates of Dawn
  4. Final Cut
  5. Meddle

Para no tener que usar el parámetro depreciado

< ol start=”6″>

en la segunda lista, he buscado por la web una solución adecuada que cumpla con los estándards W3C - y lo encontré.

Hay que escribir lo siguiente en el CSS:

listas1

Y así es como quedarán definidas tus listas:

 listas2
Ahora, nuestras listas se mostrarán como queríamos:
listas numeradas

Estos recuadros representan diferentes páginas, por supuesto.

Voy a explicar lo que ha ocurrido: si indicas esta regla CSS OL {counter-reset: item 2;} tu lista empezará en el 3 (el valor por defecto está a 9, y la lista por defecto empieza con el 1).

Por alguna razón, necesitas indicar LI:display:block; si no lo haces, los números no aparecen.

Todo lo que necesitas ahora es cambiar dinámicamente el valor en tu regla para resetear el contador.

Puedes hacerlo en PHP, ASP, CF, etc ...

La regla li:before se usa para definir la apariencia del número en tu lista numerada.

Si indicas display:block dentro del li:before, podrás crear buenas vistas y productos 100% CSS.

Y, ahora la vuelta de la tuerca - a pesar de que esta regla está especificada en W3C CSS2 standard (con soluciones incluso mejores, que harán la vida del codificador XHTML más fácil), IE 6 ignora completamente estas reglas!

Sin embargo, en el ejemplo de Amazon Search created in Ruby creado por mi colega, podemos ver como IE6 ignora la regla, pero los resultados de la búsqueda aparecen correctamente, y la apariencia en general es aceptable.

Sin embargo, si usas Firefox, verás nuestra lista numerada con toda su gloria.

Comments

]]>
Fri, 01 Sep 2006 01:25:39 +0200
Aprende UNIX en diez minutos http://itaca.nireblog.com/post/2006/08/27/aprende-unix-en-diez-minutos http://itaca.nireblog.com/post/2006/08/27/aprende-unix-en-diez-minutos Aunque algo antiguo mucha gente me pregunta si no está en castellano, así que aquí va mi traducción del artículo "Learn UNIX in 10 minutes" Aprenda UNIX en 10 minutos. Versión 1.3

Prefacio

Esto es algo que os habré dado a los estudiantes en años anteriores (formación en CAD). El propósito era tener en una página los comandos básicos para empezar a usar el shell de UNIX (para que no me llamaran preguntándome qué hacer la primera vez que alguien les diera un caset) Este documento tiene copyright pero es de libre distribución bajo los términos de GFDL .

¿Tienes alguna idea para esta página? Mándame parches, comentarios, correcciones, sobre cualquier cosa creas está equivocado o debería estar incluído. Siempre me alegrará saber de tí. Por favor incluye la palabra "UNIX" en el asunto.

Secciones:

Directorios:

Moviendose por el sistema de ficheros:

Listando directorios:

Cambiando permisos y atributos de ficheros

Moviendo, renombrando y copiando ficheros:

Visualizando y editando ficheros:

Shells

Variables de entorno

Historial interactivo

Completar nombreFichero

Bash es un buen ejemplo de shell.

Redireccion:

Pipes:

Substitución de comandos

Buscando cadenas en ficheros: el comando grep

Buscando ficheros : el comando find

Leyendo y escribiendo tapes, backups, y archivos: el comando tar

Compresión de ficheros: compress, gzip, y bzip2

Buscando ayuda: los comandos man y apropos

Básicos del editor vi FAQs

****************************************************************************************** Basic UNIX Command Line (shell) navigation : última revisión Mayo 17 2001 ****************************************************************************************** Directorios:

Los ficheros y directorios en UNIX usan "/" para separar los directorios en un path.

ejemplos:

/ directorio root

/usr directorio usr (sub-directorio del directorio / "root" )

/usr/STRIM100 STRIM100 es un subdirectorio de /usr

Moviendose por el sistema de ficheros:

pwd Muestra el "directorio de trabajo presente", o directorio actual.

cd Cambia del directorio actual al directorio HOME .

cd /usr/STRIM100 Cambia el directorio actual al /usr/STRIM100.

cd INIT Cambia el directorio actual a INIT que es un subdirectorio del actual.

cd .. Cambia del directorio actual al directorio superior.

cd $STRMWORK Cambia del directorio actual al directorio definido en la variable 'STRMWORK'.

cd ~bob Cambia del directorio actual al directorio home del usuario bob (si tienes permisos).

Listando directorios:

ls lista un directorio

ls -l lista un directorio en formato largo ( detallado) por ejemplo:


$ ls -l                        
dr wxr -xr -x   4 cliff   user   1024 Juny 18 09:40:00 WAITRON_EARNINGS
-r w-r --r --   1 cliff   user   767392 Juny 6 14:28:00 scanlib.tar.gz
^ ^ ^ ^   ^ ^   ^   ^ ^ ^ ^
| | | |   | |   |   | | | |
| | | |   | propietario   grupo   tamaño fecha hora nombre
| | | |   número de enlaces al contenido del fichero o directorio
| | | permisos para todos los usuarios
| | permisos para los miembros del grupo
| | permisos para el propietario del fichero: r = lectura, w = escritura, x = ejecutable -=no tiene permiso
tipo de fichero: - = fichero normal, d=directorio, l = enlace simbólico, y otros…

ls -a Lista el directorio actual incluyendo ficheros ocultos. Los ficheros ocultos comienzan con un "."

ls -ld * Lista todos los nombres de ficheros y directorios en el directorio actual usando el formato largo. Sin la opción "d" , ls lista el contenido de cualquier subdirectorio del actual. Con la opción "d" , ls los lista como ficheros normales.

Cambiando permisos y atributos de ficheros

chmod 755 fichero Cambia los permisos del fichero a rwx para el propietario, y rx para el grupo y el resto de usuarios. (7 = rwx = 111 binario. 5 = r-x = 101 binario)

chgrp user fichero Hace que el fichero pertenezca al grupo user.

chown cliff fichero Hace que cliff sea el propietario del fichero.

chown -R cliff dir Hace que cliff sea el propietario del directorio y de todo lo que esté en ese directorio.

Para hacer cualquiera de esos cambios debes ser el propietario del fichero/directorio o ser root.

Moviendo, renombrando y copiando ficheros:

cp file1 file2 copia un fichero

mv file1 nuevonombre mueve o renombra un fichero

mv file1 ~/AAA/ mueve file1 al sub-directorio AAA en tu directorio home.

rm file1 [file2 ...] elimina o borra un fichero

rm -r dir1 [dir2...] elimina recursivamente un directorio y su contenido. TEN CUIDADO!

mkdir dir1 [dir2...] crea directorios

mkdir -p dirpath crea el dirpath de un directorio, incluyendo todos los directorios implicados en el path.

rmdir dir1 [dir2...] elimina un directorio vacio

Visualizando y editando ficheros:

cat nombrefichero       Vuelca un fichero por pantalla en ascii.
more nombrefichero    Vuelca progresivamente un fichero en la pantalla: ENTER = baja una línea BARRAESPACIO = baja una página  q=quit
less nombrefichero      Igual que more, pero también puedes usar Av-Pág. No en todos los sistemas.
vi nombrefichero        Edita un fichero usando el editor vi. Todos los sistemas UNIX tienen el editor vi de una u otra manera.
emacs nombrefichero   Edita un fichero usando el editor emacs. No todos los sistemas tienen emacs.
head nombrefichero    Muestra las primeras líneas de un fichero.
head -n  nombrefichero  Muestra las primeras n líneas de un fichero.
tail nombrefichero      Muestra las últimas líneas de un fichero.
tail -n nombrefichero  Muestra las últimas n líneas de un fichero.

Shells

El comportamiento de la interfaz de la línea de comandos diferirá ligeramente dependiendo del programa shell que se esté usando.

Dependiendo del shell usado, algunos extras serán más rápidos.

Para saber que shell estás usando puedes utilizar el comando:

echo $SHELL

Por supuesto que puedes crear un fichero con una lista de los comandos shell y ejecutarlo como un programa para efectuar una tarea.

A esto se le llama un shell script.

Es de hecho el propósito primario de la mayoría de shells, no el funcionamiento interactivo de la línea de comandos.

Variables de entorno

Puedes enseñar a tu shell a recordar cosas para usar más adelante variables de entorno.

Por ejemplo bajo el shell bash:

export CASROOT=/usr/local/CAS3.0

Define la variable CASROOT con el valor /usr/local/CAS3.0.

export LD_LIBRARY_PATH=$CASROOT/Linux/lib

Define la variable LD_LIBRARY_PATH con el valor de CASROOT con with /Linux/lib añadido, o /usr/local/CAS3.0/Linux/lib

Poniendo $ al nombre de variable, podemos evaluarlo en cualquier comando:

cd $CASROOT

Cambia el directorio de trabajo actual a el valor de CASROOT

echo $CASROOT Saca el valor de CASROOT,

o /usr/local/CAS3.0 printenv CASROOT

Hace lo mismo en bash y algunos otros shells.

Historial interactivo

Un rasgo de bash y tcsh (y en algunas ocasiones de otros) puedes usar la flecha hacia arriba para acceder a los comandos previos, editarlos y volverlos a ejecutar.

Completar nombreFichero

Una característica de bash y tcsh (y posiblemente otros) es que puedes usar la tecla TAB para completar un fichero parcialmente escrito. Por ejemplo si tienes un fichero denominado

constantine-monks-and-willy-wonka.txt

en tu directorio y quieres editarlo puedes escribir 'vi const', pulsar la tecla TAB, y el shell rellenará el resto del nombre por tí (siempre que el término sea único).

Bash es un buen ejemplo de shell.

Bash completará también el nombre de los comandos y variables de entorno. Y si hay múltiples posibilidades para completarlo, si pulsas TAB dos veces te las mostrará todas. Bash es el shell de usuario por defecto en la mayoría de sistemas Linux.

Redirección:

grep string nombrefichero > nuevofichero Redirecciona la salida del grep superior a un fichero "nuevofichero".

grep string nombrefichero >> ficheroExistente Agrega la salida del comando grep al final de un fichero ya existente.

Las directivas de redirección, > y >> se pueden usar en la salida de la mayoría de comandos para dirigir dicha salida a un fichero.

Pipes:

El símbolo pipe "|" se usa para dirigir la salida de un comando a la entrada de otro.

Por ejemplo:

ls -l | more Estos comandos cogen la salida del comando para listar de formato largo "ls -l" y lo dirige al comando more (conocido también como un filtro). En este caso una lista muy larga de ficheros se pueden ver en una página.

du -sc * | sort -n | tail El comando "du -sc" lista el tamaño de todos los ficheros y directorios en el directorio de trabajo actual. Esto se consigue a través de "sort -n" que ordena la salida del tamaño más pequeño al más grande. Finalmente, esta salida se transporta a través de "tail" que muestra sólo los últimos resultados (que resultan ser los más grandes).

Substitución de comandos

Podemos usar la salida de un comando como la entrada de otro comando de otra manera denominada substitución de comandos.

La substitución de comandos se invoca cuando se encierra el comando substituido entre comillas.

Por ejemplo:

cat `find . -name aaa.txt`

el cual sacará por la pantalla ( cat ) todos los ficheros que se llamen aaa.txt que existan en el directorio actual o en algún subdirectorio del árbol.

Buscando cadenas en ficheros: el comando grep

grep string nombrefichero imprime todas las líneas en un fichero que contenga la cadena

Buscando ficheros: el comando find

find search_path -name nombrefichero

find . -name aaa.txt Encuentra todos los ficheros con el nombre aaa.txt en el directorio actual o cualquier subdirectorio del mismo.

find / -name vimrc Encuentra todos los ficheros con el nombre 'vimrc' en cualquier parte del sistema.

find /usr/local/games -name "*xpilot*" Encuentra todos los ficheros cuyos nombres contenga la cadena 'xpilot' en el directorio '/usr/local/games'.

Leyendo y escribiendo tapes, backups, y archivos: el comando tar

El comando tar significa "grabar archivo".

Es la manera "standard" de leer y escribir archivos (colecciones de ficheros y directorios completos).

A menudo encontrarás archivos con nombres como stuff.tar o stuff.tar.gz. Son ficheros dentro de uno comprimido, usando el programa de compresión gzip respectivo.

Las posibilidades de que alguien te de un archivo grabado en un sistema UNIX, es que será en formato tar, y usarás tar para leerlo.

Asimismo, si quieres grabar un fichero para dárselo a alguien, usarás probablemente tar también.

Ejemplos de Tar:

tar xv Extrae (x) ficheros al mismo tiempo que los lista por pantalla (v = verbose).

tar tv Lista los ficheros sin extraerlos.

tar cv file1 file2 Escribe los ficheros 'file1' y 'file2' al dispositivo por defecto.

tar cvf archive.tar file1 [file2...] Crea un archivo tar con el nombre "archive.tar" conteniendo file1, file2...etc.

tar xvf archive.tar Extrae desde el fichero

tar cvfz archive.tar.gz dname Crea un archivo tar comprimido con gzip conteniendo todo lo del directorio 'dname'. No funciona con todas las versiones de tar.

tar xvfz archive.tar.gz Extrae un archivo tar comprimido con gzip. No funciona con todas las versiones de tar.

tar cvfI archive.tar.bz2 dname Crea un archivo tar comprimido con bz2. No funciona con todas las versiones de tar.

Comprimiendo ficheros: compress, gzip, y bzip2

Los comandos de compresión standard de UNIX son compress y uncompress. Los ficheros comprimidos tienen el sufijo .Z añadido al nombre. Por ejemplo:

compress part.igs Crea el fichero comprimido part.igs.

Z uncompress part.igs Descomprime part.igs del fichero comprimido part.igs.Z. Nota que no se requiere .Z.

Otra utilidad común de compresión es gzip (y gunzip). Son utilidades de compresión y descompresión de GNU. gzip comprime mejor que los compresores estándard, pero no está instalado en todos los sistemas.

El sufijo para los ficheros gzipped es .gz

gzip part.igs Crea un fichero comprimido part.igs.gz

gunzip part.igs Extrae el fichero original de part.igs.gz

La utilidad bzip2 tiene (en general) mejor compresión que gzip, pero al precio de más tiempo para comprimir y descomprimir los ficheros. No es una utilidad tan común como gzip, pero está generalmente más disponible.

bzip2 part.igs Crea un fichero part.igs.bz2 comprimido con Iges

bunzip2 part.igs.bz2 Descomprime el fichero comprimido con iges.

Buscando ayuda: los comandos man y apropos

La mayoría de los comandos tienen un manual a menudo muy útil, con frecuencia más o menos detallado, algunas veces críptico y con descripciones inconmesurables sobre su uso.

Algunos dicen que se les llama "man" porque son únicamente para hombres reales. Ejemplo:

man ls Muestra la página del manual para el comando ls

Puedes buscar por las páginas man usando apropos

Ejemplo: apropos build Muestra una lista de todas las páginas man cuyas descripciones contengan la palabra "build"

Haz un man apropos para una ayuda detallada sobre apropos.

Básicos del editor vi

Abriendo un fichero
vi nombrefichero
Creando texto
Modo edición: Estas teclas entran modos de edición y escriben texto en tu documento.
i     Inserta antes de la posición actual del cursor
I     Inserta al principio de la línea actual
a    Inserta (añade) después de la posición actual del cursor
A    Añade al final de línea
r    Sustituye 1 caracter
R   Modo sustituir
< esc > Termina modo de insertar o sobre-escribir

Borrado de texto

 x      Borra un caracter
dd    Borra la línea actual y la guarda en el buffer
ndd  Borra n líneas (n es un número) y las guarda en el buffer
J      Añade la siguiente línea al final de la actual (borra el final de línea).

Oops

 u     Deshace el último comando
copiar y pegar
yy    Tira la siguiente línea en el buffer
nyy  Tira las n líneas en el buffer
p      Coloca el contenido del buffer tras la línea actual
P      Coloca el contenido del buffer antes de la línea actual
posicionando el cursor
^d    Página hacia abajo
^u    Página hacia arriba
:n     Posiciona cursor en la línea n
:$     Posiciona el cursor al final del fichero
^g    Muestra el número de línea actual
h,j,k,l izquierda,abajo,arriba, y derecha respectivamente.
Las teclas de flechas deberían también funcionar si el teclado funciona.
substitución de cadenas 
:n1,n2:s/string1/string2/[g]       Substituye string2 por string1 en las líneas n1 a n2. Si se incluye g (significa global), se substituyen todas las instancias de string1 en cada línea. Si no se incluye g, sólo se substituye la primera instancia que coincida.

 ^ coincida con principio de línea    .  coincida con cualquier carácter   
$ coincida con final de línea

Estos y otros "caracteres especiales" (como la barra oblícua hacia adelante) se pueden "escapar" con \ por ejemplo para que coincida con la cadena "/usr/STRIM100/SOFT" poner "\/usr\/STRIM100\/SOFT"

Ejemplos: :1,$:s/dog/cat/g Substituye 'cat' por 'dog', cada caso por la línea entera - líneas 1 a $ (final de fichero)

:23,25:/frog/bird/ Substituye 'bird' por 'frog' en las líneas 23 a 25.

Sólo se substituye la primera coincidencia en cada línea.

Guardando y saliendo y otros comandos "ex"

Esos comandos llevan todos el prefijo de los dos puntos (:) y luego se sitúan en la esquina inferior izquierda de la ventana.

Se les llama comandos "ex" porque son comandos del editor de texto ex - el editor de líneas precursor al editor vi.

No se puede introducir un comando "ex" estando en modo edición (escribiendo texto en la pantalla)

Pulsando se sale del modo edición.

:w Graba el fichero actual.

:w new.file Graba el fichero con el nombre 'new.file'.

:w! existing.file Sobreescribe un fichero existente con el que actualmente se está editando.

:wq Graba el fichero y sale.

:q Salir.

:q! Salir sin cambios

:e nombrefichero Abre el fichero 'nombrefichero' para editarlo.

:set number Activa la numeración de líneas

:set nonumber Desactiva la numeración de líneas

FAQs

Las USENET FAQs debería ser el primer sitio donde buscar una respuesta a preguntas específicas.

Podeis encontrar la mayoría en RTFM

El contenido de este directorio incluye vi, bash, y comp.unix.questions FAQs.

Buscar archivos USENET es también muy útil.

google.com tiene un archivo USENET (antes Deja.com's) .

Normas Advanced Group Search

Este documento ha sido convertido de texto plano usando Vim.

Vim es la mejor versión del editor vi.

Copyright (c) 2000-2006 C R Johnson

Se permite copiar, distribuir y/o modificar este documento bajo los términos de la Licencia GNU Free Documentation License, Version 1.1 o cualquier versión posterior publicada por la Free Software Foundation; con la sección invariable Prefacio, textos de cubierta frontal, y sin textos de cubierta posterior.

Se puede encontrar una copia de la licencia aqui. (versión en castellano aqui)