Cuando tuvimos que actualizar nuestros conocimientos sobre Diseño Asistido por Computadora (CAD) nuestra experiencia era limitada y amarrada al software privativo Autocad® y como estamos decididos a ser libres nos decantamos por Freecad para realizar nuestro trabajo. Comenzamos así nuestro aprendizaje, que sobre el tema abunda en internet pero quien de inmediato llamó nuestra atención por su trabajo estructurado y paciente fue «ObiJuan» González y su Escuela de Padawan’s «CloneWars». Por ello cuando tuvimos noticias de que se le había otorgado el premio de Google llamado O’Reilly Open Source Award en reconocimiento a su labor (aunque es tonto de nuestra parte) nos contentamos en sumo grado y de que no solamente el Software Libre esté en tan alto nivel en España sino que también el HARDWARE LIBRE está surgiendo en América tutelado por (a pocas personas llamamos por su título, y por sus títulos menos) el Ingeniero y Doctor Juan González Gómez.
El jueves 11 de mayo en Austin (Estados Unidos), durante la celebración del congreso mundial OSCON, fue entregado el premio O’Reilly 2017. Fueron creados en el año 2005 por Tim O’Reilly y hasta el 2009 llevaban el prefijo Google-O’Reilly pero hasta la fecha de hoy simplemente lleva el nombre O’Reilly Open Source Award: un reconocimiento a los individuos por su dedicación, innovación, liderazgo y destacada contribución al código abierto.
El premio, creado y organizado por Google en colaboración con la factoría de Tim O’Reilly, desde el 2005, se entregó este jueves 11 de mayo en Austin (Estados Unidos) durante la celebración del congreso mundial OSCON, evento que reúne a toda la comunidad de ingenieros y desarrolladores de software y hardware libre.
Es así que ObiJuán se ha ganado su hito en la muy famosa Wikipedia (hasta que Skynet? cobre conciencia de sí misma y borre nuestra adición de los ganadores del año 2017 en esa página, ja, ja, ja).
Ni os imagináis la ilusión que me hace aparecer en wikipedia?Este es el mayor de los premios¡Muchas gracias a todos!https://t.co/wgUTcNScTP
Eterno empedernido de la saga de películas «La Guerra de las Galaxias «Star Wars»» -¡ejem! nosotros también ?- se autodenomina por este juego de pronunciación en inglés y castellano del Maestro Jedi de los films Obi-Wan Kenobi como ObiJuán (nosotros castellanizamos aún más las cosas con la inclusión del acento) este madrileño ejemplar comenzó sus andanzas …
¡Este blog no va de ciencias sociales! No somos biógrafos de profesión, nuestra intención es dar justo reconocimiento al que «sabemos que sabe»; los lectores de este humilde portal y de nuestra cuenta Twitter pueden dar fe de que siempre reconocemos al que sabe más que nosotros y es así que aprendemos y luego difundimos el conocimiento adquirido. Sigamos pues, con nuestra entrada de hoy.
…comenzó sus andanzas en el servicio militar obligatorio («la mili») y es allí donde le «encasquetaron» el apodo por ser tan fanático de «Star Wars».
Ya desde el año 1996 «lidia» con Linux pero ya desde muy joven «lo que se le da» es lo de la informática. Sufrió lo mismo que Richard Stallman (y nosotros también desde los años 80): un mundo privativo donde te ofrecen «comprar, usar y desechar» * pero no preguntes cómo funciona*.
Uno de sus primeros cacharros fue ZX-Spectrum donde comenzó con el lenguaje BASIC (¿y quién no ha comenzado con ese lenguaje? ¡Ah, ahora los chavales estudian Python, menuda «paliza» para nosotros los vejetes!). Luego aprendió por su propia cuenta Pascal (¡ea, que yo tuve que pisar la universidad para poder aprender este lenguaje! ?) , C, Prolog, y ensamblador (eax, ebx, ebp y esp fueron sus grandes amigos). Luego al entrar en el mundo GNU/Linux reafirma C, y aprende C++ y Python.
Comenzó la universidad en 1991 y su primera obra fue el Sistema Tower Pro Tarjeta CT6811 para su sueño hecho realidad: el robot Tritt (que ya vendrá algún día el «Mazinger ?», porque ya el R2D2 lo tuvo… ¡como impresora 3D, con dinastía y todo!). De 1996 al 98 se dedica en cuerpo y alma -pesetas de por medio- al campo de los micro-robots y es cuando emprende su cruzada de hacer una España con un fuerte desarrollo endógeno para librarse de la dependencia tecnológica extranjera: producir y crear todo en su tierra natal (dichas batallas aún se libran fuertemente y se ganan poco a poco con muchísimo esfuerzo, solo que ahora no está solo, sus padawan‘s lo acompañan y apoyan).
En 2003 ya hablaba de los problemas del hardware libre mediante conferencia dictada en el VI Congreso de Hispalinux y llegó a la conclusión que son los planos de hardware son los que cumplen con las 4 premisas del software libre y por ende es así que debe ser considerado el hardware libre (ahora va de que preguntéis de dónde proviene el nombre GNU y obtendréis una respuesta enrevesada parecida).
En 2007-08 trabajó sobre un mando para wii y pudo lograr que controlara su robot Skybot, demostrando con ello que las empresas privativas tienen aún mucho más campo que cubrir si tan solo se dignaran a compartir el conocimiento.
Su «grito de guerra» es:
«Más vale proyecto publicado con licencia libre, que ciento en el cajón»
"Más vale proyecto publicado con licencia libre, que ciento en el cajón" #proverbioFriki
Patrimonio Tecnológico de la Humanidad: es que vamos a avanzar muchísimo más como Humanidad si compartimos el conocimiento! ¡Salimos ganando todos! La riqueza se va a distribuir muchísimo más… Esto se vio desde el principio en el mundo de la ciencia. Si tú no compartes lo que has descubierto, y te lo revisan otras personas, no avanzas, ya no es ciencia lo que haces.
Tuvo una fuerte influencia el trabajo del profesor Adrian Bowyer quien lanza al mundo la primera impresora para tercera dimensión «3D» a modo de hardware libre: fue desde entonces una revolución imparable en la cual ObiJuán se especializó y contribuyó -y seguirá aportando- en su conocimiento y masificación. Hasta ahora tiene construidas 270 impresoras 3D y podéis leer su trabajo enCloneWars en este enlace.
Así mismo lleva un canal en Youtube con multitud de tutoriales donde explica y comparte con suma paciencia su conocimiento y experiencia, añadiéndole como siempre su toque personal:
ObiJuán es apasionado de la tecnología y en 2016 comezó su proyecto épico: la reconstrucción del CPU del «Apolo 11», el proyecto espacial de la NASA que llevó a nuestra humanidad a la Luna; la «paleoarquitectura» de los ordenadores, sin duda una tarea ardua. Escuchemos en palabras del propio ObiJuán el proyecto de marras:
Para él fue una bendición la tecnología que aportó Arduino en los años 90, fue como la revista «Mecánica Popular» aplicado al mundo de la electrónica. Si Arduino abrió la posibilidad de combinar los componentes y ponerlos a funcionar con los FPGAs (Field Programmable Gate Array) tendremos la posibilidad de construir nuestros propios «chips» y eso ahora mismo es lo que mantiene más ocupado a ObiJuán. Esto es así porque a pesar de todos los títulos universitarios que ha logrado, lo que le apasiona es construir y verificar por sus propios medios (vamos que la ciencia se han de replicar los mismo resultados en las mismas condiciones): es de los que crea y observa, basado en la teoría, pero la destreza manual es bien sabido que abre nuestros cerebros a nuevas conexiones sinápticas y nuevas formas y maneras de ver las cosas, ¡es de los que dicen «no me fío de lo que me dices o alegas, dejadme probar y comprobar»!
A ObiJuán no le gustan los agradecimientos; nosotros por estos lares tampoco (de hecho, debido a la dura situación de nuestro país hasta ahora es que aceptamos donaciones) pero cuando la obra es grande ES IMPOSIBLE QUE PASE DESAPERCIBIDA. Desde 1989 que comenzamos a estudiar en la Facultad de Ingeniería de la Universidad de Carabobo nuestro punto de difusión de conocimiento era el boulevard al lado del cafetín principal, AHORA LO ES EL INTERNET POR EL MUNDO ENTEROy aunque en esa época ya sabíamos que difundir el conocimiento era la clave, no es sino hasta hace poco -en serio y en firme desde el año 2014- que entramos en el mundo del saber del software libre. Pero he aquí que ObiJuán no solo usa y difunde el software libre, ¡EL HARDWARE LIBRE TAMBIÉN! Nos aventaja por largo rato, y además se involucra en persona en causas sociales ¿Cómo no reconocer su labor? ¡Sería una injusticia!
Hoy tuvimos el regocijo de leer un artículo publicado por los colegas de LinuxAdictos donde hablan sobre comandos pocos conocidos para la terminal GNU/Linux. Es por ello que decidimos publicar nuestra propia entrada pero dandole valor agregado: vamos a enfocarlo desde nuestra distribución preferida, Ubuntu Desktop (actualmente usamos las 16.04 LTS) y también como suplemento a nuestra otra entrada sobre la introducción a la cónsola de comandos; ¡venid y acompañadnos en la búsqueda del conocimiento!
Comandos que vienen incluídos en Ubuntu.
Pues eso, comandos poco conocidos que ya vienen por defecto ya instalados en Ubuntu, nada más teclearlos los podemos utilizar. Lo que haremos acá es teclear el comando «man» seguido de un espacio y el nombre del comando a conocer, leeremos su descripción en inglés y las traduciremos y le buscaremos propósitos prácticos, comencemos pues.
Comando «calendar»:
El comando «calendar» pertenece al paquete de bsdmainutils que viene por defecto en la distro GNU/Linux que utilizamos para esta entrada, Ubuntu 16.04 Xenial. Dado el caso extraño que no lo tengáis instalado podéis hacerlo con el comando «sudo apt-get install bsdmainutils» y sin ir a mucha profundidad en la materia, podréis ver los archivos que componen ese paquete de software en este enlace.
Este paquete proviene del muy antiguo sistema Unix (el comando «man calendar» especifica que un comando calendar apareció en la «Version 7 AT&T UNIX» en 1979) y ciertamente que nos fue difícil encontrar a quien o quienes actualmente mantienen dicho repositorio, ya que el mero hecho de ser un calendario implica lo más dinámico de este mundo: el transcurrir del tiempo es siempre cambiante. En un «fork» al que tuvimos acceso hecho por Andrey Ulanov < drey @ rt.mipt.ru > en el año 2002 comenta que proviene de OpenBSD e incluye una licencia que se hereda de cada uno de sus componentes, por ejemplo el módulo pathnames.h nos da la siguiente información:
/* $OpenBSD: pathnames.h,v 1.3 1996/12/05 06:04:41 millert Exp $ */
/* $Id: pathnames.h,v 1.1.1.1 2002/11/26 23:37:38 drey Exp $ */
/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)pathnames.h 8.1 (Berkeley) 6/6/93
*/
Como véis se remota hasta el año de 1989, época en la cual apenas nosotros entrábamos a estudiar en la universidad, ¡fascinante como pasa el tiempo! Otra cosa es la fuente de bsdmainutils en la distribución Debian donde el propio Ian Murdock introdujo código fuente según se puede leer en esta página (no obstante acá la reproducimos de igual manera):
This is a collection of programs from 4.4BSD-Lite that have not (yet)
been re-written by FSF as GNU. It was constructed for inclusion in
Debian Linux. As programs found here become available from GNU sources,
they will be replaced.
This package was originally put together by Austin Donnelly
<and1000@debian.org>, but is heavily based on bsdutils, originally put
together by Ian Murdock <imurdock@gnu.ai.mit.edu>. Please report any
problems or suggested additions or changes to Austin Donnelly.
Then the package has been maintained by Charles Briscoe-Smith
<cpbs@debian.org>. I gathered data for the 1999-2001 calendar files
from various sources on the Internet, and I'd also like to thank Oliver
Elphick, Julian Gilbey, Daniel Martin and Jaldhar H. Vyas for providing
much useful data on the various religous calendars. I have edited the
files they provided to fit calendar's requirements, so any errors should
be attributed to me.
After cpbs@debian.org, Marco d'Itri <md@linux.it> maintained it for
almost two years, before Tollef Fog Heen <tfheen@debian.org> took over.
The package is now maintained by Graham Wilson <bob@decoy.wox.org>.
This package may be redistributed under the terms of the UCB BSD
license:
Copyright (C) 1980 -1998 The Regents of the University of California.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
4. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Usando el comando «calendar».
Nada más en la terminal al introducir el comando sin ningún parámetro veremos algo similar esto, os indicamos que la salida por pantall dependerá de la fecha de vuestro ordenador y os dará resultados similares o diferentes:
Figura 1:
Notad la última línea en castellano, ya os explicaremos luego. Como bien podéis observar la cosa va en idioma inglés lo cual no representa problema, tal cual el latín en el mundo antiguo fue la lengua franca así lo es hoy este idioma. Lo que os advertimos es que hay varios idiomas más, tales como el francés y el ruso [justo arriba del Día de San Jorge esta en ruso el «Красная горка (праздник)» -aparición de Jesucristo a sus discípulos y la conversión del Apóstol Tomás-] y aunque no tiene calendarios del planeta entero, la intención del programa es bueno y tiene dos utilidades extras que estudiaremos pronto.
¿De dónde saca este programa calendar los datos a mostrar por pantalla? En la carpeta /usr/share/calendar/ de nuestros ordenadores se almacenan una serie de ficheros con el nombre, cómo no, calendar pero con diferentes extensiones cada uno, por ejemplo .russian, .christian o .computer.
Figura 2
Como bien imaginamos por los metadatos, cada extensión describe lo que contiene el archivo y cuando llamamos al programa calendar simplemente lee y extrae los datos correspondientes a la fecha actual de cada fichero, pero hay más: también hay unos directorios con nombres claves que describen las dos primera letras el idioma separados de un guión bajo y dos letras más en mayúsculas que describen el país. Así tenemos que el directorio de_AT contiene en idioma alemán («deuschtland» en inglés) del país Austria (AT) donde se habla el alto alemán, más inclinado hacia el latín; de segundo en el listado está de_DE que corresponde al idioma Alemán de Alemania (ea, eso sonó feo en nuestro bello idioma castellano, nuestro idioma no es amistoso con esto de las redundancias).
Como somos unos «hackers» -o estamos en camino de ‘graduarnos’- podemos hacer uso del comando grep y la ‘tubería’ «|» para filtrar resultados por una palabra clave específica, por ejemplo «Bonne fête» o «Feliz cumpleaños» en francés, para ello teclearemos lo siguiente: calendar | grep «Bonne fête» y solo tendremos dos líneas –o ninguna o varias, repetimos que eso depende de la fecha de nuestro ordenador-.
Esto es para búsquedas puntuales y exactas (claro que con el uso de expresiones regulares podremos ampliar la búsqueda -mayúsculas/minúsculas, caracteres comodín, etc), pero ¿qué tal si queremos ver temas específicos? Veamos alguno de estos ficheros de datos con fechas y busquemos uno que está en nuestro idioma, por ejemplo «calendar.argentina». Si le damos el comando cat en la ubicación /usr/share/calendar al fichero calendar.argentina:
Figura 3
Evidentemente escrito en lenguaje C notamos un encabezado describiendo el autor, unas variables de enlace para ser compiladas, el conjunto de caracteres a emplear y el conjunto de datos, uno por cada línea. Comienza con el mes abreviado en tres letras del idioma inglés, espacio, dos dígitos -cero a la izquierda de ser necesario-, caracter tabulador y luego la descripción del evento del correspondiente día.
Sumamente importante a destacar es que debemos separar la fecha de la descripción por medio del caracter tabulador( Tab↹ ), de lo contrario la línea no será mostrada en el calendario (nuevo en esta versión y que se diferencia de versiones anteriore según «man calendar«).
Hasta acá lo único especial son los comandos en lenguaje C ya que los eventos están muy bien «formateados» en texto plano pero son precisamente esas referencias en C las que nos indican que hay algo más. Esto quiere decir que «calendar» tiene una estructura rígida y que deben tener esos encabezados pero la cosa no termina allí. Si detalláis en la «Figura 2» nosotros agregamos un fichero calendar.venezuela con encabezado en toda regla y unos pocos acontecimientos históricos de nuestro país pero nada de nada, no lo muestra para nada. Eso quiere decir que solamente se atiene a los archivos que vengan con el paquete para probar esto último modificamos el fichero calendar.unitedkingdom:
Y modificamos la línea del 23 de abril, Día de San Jorge, le colocamos la descripción en castellano y la muestra por pantalla sin problema alguno (figura 1). Lo bueno del software libre es que tenemos acceso directo al código fuente y podemos modificar y compilar, ya sea de manera estática o dinámica, a gusto con nuestras modificaciónes. Pero antes de hacer esto sigamos estudiando las opciones ya establecidas en el comando «calendar» y luego veremos que más podemos hacer.
Parámetros del comando «calendar»:
Primero podemos consultar los eventos de cualquier otra fecha simplemente acompañando de un espacio, el comando del parámetro «-t«, otro espacio, y la fecha en formato AAAAMMDD, por ejemplo el 30 de diciembre de 2017 lo solicitamos de la siguiente manera:
calendar -t 20171230
Desglosamos la respuesta y no vemos por ningún lado la nota con el fallecimiento del gran Ian Murdock, padre de la distribución Debian (madre a su vez de Ubuntu) y que tiene su propio fichero calendar.debian. Por si acaso es que estamos cegatones volvemos a aplicar el comando grep de la siguiente manera:
calendar -t 20171230 | grep "urdock"
El cual no devuelve nada, aunque si usamos
calendar -t 20171230 | grep "KPD"
Sí que obtenemos respuesta: «Gründung der KPD, 1918», «Kommunistische Partei Deutschlands» o establecimiento del Partido Comunista Alemán, el 30 de diciembre de 1918. Es por ello que tecleamos el comando
sudo nano /usr/share/calendar/calendar.debian
y agregamos la siguiente línea (recordad de insertar pulsar la tecla Tabulador entre la fecha y la descripción):
Dec 30↹Ian Murdock, stalwart proponent of Free Open Source Software, Father, Son, and the 'ian' in Debian.
Guardamos y listo, guardamos el recordatorio de tan lamentable fallecimiento para futuras generaciones ??.
Por defecto el comando calendar muestra dos días de acontecimientos (el nombre correcto son recordatorios) pero podemos especificar el número de días con el parámetro -l acompañado del número de días hacia adelante que queremos visualizar (nota: el otro parámetro que hace exactamente el mismo trabajo es -A pero como se presta a confusión con el otro parámetro –a usaremos siempre -l). Así si queremos ver exactamente los recordatorios del 30 de diciembre debemos teclear lo siguiente:
calendar -l 0 -t 20151230
Figura 4
Con el parámetro -B podemos especificar hacia atrás en el tiempo, desde la fecha señalada por el parámetro -t, el número de días que queramos ver. Por cierto que si se obvia el parámetro -t se toma la fecha del ordenador y si es viernes mostrará hasta el próximo lunes siguiente (si hay recordatorios); el parámetro -w se basa en eso para especificar el número de días hacia el futuro, pero no hayamos especialmente útil esa opción.
¿Recuerdan que comentamos haber realizado un calendario para Venezuela? Pues bueno llegó la hora de poder visualizarlo con el parámetro -f acompañado de la ruta de ubicación del archivo de marras, para ello metemos:
¿Qué tal nos ha quedado? Para subir este archivo y contribuir con el software libre publicaremos dicho archivo en GitHub con licencia «Creative Commons» e instrucciones sobre como instalarlo y utilizarlo.
Instalando «calendar.venezuela» en nuestro ordenador.
Según las instrucciones en el archivo calendar.alldeberíamos copiar dicho archivo a nuestra carpeta personal «~/.calendar/» si queremos editar dicho archivo. Esto es así ya que si compartimos un ordenador con varias personas lo lógico es que cada quien tenga su calendario particular, es decir, en el fichero «calendar.all» podemos especificar cuales ficheros queremos ver y/o utilizar. Si lo copiamos a nuestro perfil personal podemos editarlo sin molestar a los otros usuarios del sistema.
En nuestro caso decidimos modificar el archivo calendar.all para todos los usuarios para que tengan acceso al fichero de recordatorio de Venezuela (ambos en la carpeta /usr/share/calendar/). Para ello agregamos al archivo la siguiente línea, justo al final, por orden alfabético:
#include <calendar.venezuela>
Luego guardamos y podemos inmediatamente comprobar si funciona. De igual manera así como agregamos, podemos «quitar» ficheros de recordatorios que no pensamos usar. En realidad quitamos es la referencia o referencias, no el o los archivos en sí mismos.
Comandos «cal» y «ncal»:
Si necesitamos ver por pantalla el mes actual simplemente tecleamos cal y lo veremos por pantalla y el día actual estará resaltado. De manera similar funciona ncal pero en vez de tener los días de la semana en el eje de las abscisas los coloca en el eje de las ordenadas. Los parámetros son comunes a ambos comandos, pero tienen sus excepciones (os queda como tarea averiguar cuáles):
Si no queremos ver resaltado el día actual usaremos el parámetro -h.
Si queremos ver un mes específico del año actual usaremos -m n donde n es el número del mes. También podemos colocar las tres primeras letras del mes (inglés o castellano, sin embargo no reconoce francés ni ruso).
Si queremos ver el año completo -en curso- colocamos -y. Si necesitamos un año específico lo colocamos al lado (calendario gregoriano). Por ejemplo podremos saber que el 26 de diciembre del año 7017 será un día viernes. ?
Podremos combinar mes y año en la misma orden, ejemplo: cal -m 12 2117 mostrará el mes de diciembre del año 2117.
Algo muy útil es visualizar el mes anterior, el actual y el venidero: para ellos usamos el parámetro -3.
Para ver varios meses hacia adelante, -A seguido del número de meses; -B especifica los meses hacia atrás. Ejemplo: «cal -B 1 -A 3″.
Como sabemos el día cero en informática es el domingo, día del Señor, quien al séptimo día tomó descanso (sábado para los judíos). Para nosotros los católicos el domingo es día de adorar a Dios así que comenzamos a trabajar los lunes, por ello podemos especificar que las semanas comienzen los días lunes con -M y con -S comienzan los domingos (opción por defecto). Esta opción no funciona con cal no obstante ncal tiene un parámetro -b que tiene el mismo estilo de cal, ¡probad!
Comando «yes»:
Brevemente diremos que es un comando para nosotros los «nerds»: el comando yes repite indefinidamente por pantalla el texto que lo acompañe. Para detenerlo debemos usar la combinación de teclas CTRL+C (esto es válido para todos los comandos de terminal). Viene con el conjunto de utilerías básicas GNU.
Comando «col»:
El comando col también es poco conocido pero tiene el aliciente de trabajar con los comandos nroff,tbl y colcrt; sin embargo le hallamos cierta utilidad didáctica si lo combinamos con los caracteres especiales utilizados para el shell y el lenguaje C. Es por ello que comenzaremos de atrás para adelante: presentamos los caracteres especiales y terminamos con el comando col.
Pues bien, en el juego de caracteres ASCII (ahora sustituidos por los caracteres UNICODE y representados de manera práctica con UTF-8 –revisad nuestro tutorial sonbre HTML5- ) los primeros 31 caracteres son especiales, llamados «de sistema» y tienen diversos usos especiales. Como abreboca tenemos el ACK (acknowledgement) o reconocimiento: si recibimos un datagrama por TCP (o un paquete por puerto serial) y el contenido es recibido de conformidad a reglas preexistentes simplemente contestamos enviando dicho caracter, el número 6 en sistema de numeración decimal (en sistema binario es 000 0110 e igual es 6 en octal y hexadecimal). Además de esta numeración en el lenguaje C (así como Java, Perl e incluso Visual Basic) se le representa con caracteres de escape (esto se presta a confusión a la hora de traducir al castellano, ojito como lo interpretáis). Estos caracteres de escape tienen la función de salir, escaparse de la representación tal como son y se interpretan por pantalla e impresoras de matriz de punto (y algunas de inyección de tinta) de manera diferente. ¿Qué diantres tiene esto que ver con la terminal GNU/Linux o «shell»? ?
Vamos a la práctica directamente con solamente un caracter: el número 11 que corresponde al tabulador vertical (no confundir con el tabulador horizontal) al cual podemos almacenar en una variable con ayuda del operador $ el cual interpreta los códigos «escapados» por medio de «\0» -si es octal- o «\x» si es hexadecimal. En este caso sería «\013» en octal o «\xob» en hexadecimal. Corred los siguientes ejemplos en vuestra terminal:
Como notaréis aparentemente no vemos nada por pantalla y para notar como trabaja el tabulador vertical podemos acompañarlo de texto descriptivo de la siguiente manera, mirad la animación:
Allí veís el famoso comando col en acción. Otra forma de representar al tabulador vertical en lenguaje C es con «\v«:
jimmy@KEVIN:~$ linea=$'\vLinea 1.\vLinea 2.\vLinea 3.'
jimmy@KEVIN:~$ echo "$linea"
Linea 1.
Linea 2.
Linea 3.
jimmy@KEVIN:~$
Comando «colrm»:
El comando colrm nos permite remover la primera n columnas ya sea de un archivo de texto o lo que ingresemos por cónsola de comandos. Hacemos notar que la numeración comienza en uno y no en cero como la mayoría de las matrices en computación. El ejemplo aclara dudas:
Otro uso es suministrarle dos parámetros: la columna de inicio y el largo que removerá:
Comando «column»:
El comando column viene a ser de utilidad si queremos mostrar en columnas una lista que tengamos ya sea en un archivo o en una entrada de texto de terminal con el conector tubería «|«.
Comando «from»:
Este comando permite visualizar lo que hallan enviado los usuarios por el sistema de correo en un ordenador GNU/Linux. Sirve como sistema de comunicación enre los usuarios registrados en un ordenador.
Comando «hexdump»:
Permite desglosar los códigos ASCII en su representación decimal, octal o hexadecimal e incluso aplicandole un formato específico (aparte de los que trae de manera predeterminada) ya sea de un archivo o por entrada de terminal. Acá vemos el formato más útil para dicho comando, pero las posibilidades son infinitas:
jimmy@KEVIN:~$ echo "ABCD" | hexdump -v -e '/1 "%_ad# "' -e '/1 "%02X hex"' -e '/1 " = %03i dec"' -e '/1 " = %03o oct"' -e '/1 " = _%c\_\n"'
0# 41 hex = 065 dec = 101 oct = _A_
1# 42 hex = 066 dec = 102 oct = _B_
2# 43 hex = 067 dec = 103 oct = _C_
3# 44 hex = 068 dec = 104 oct = _D_
4# 0A hex = 010 dec = 012 oct = _
Esencialmente usamos el comando echo para enviar las cuatro primeras letras del abecedario por medio del comando «tubería» «|» y entregarselo a hexdump el cual lo desglosa caracter a caracter y muestra su código ASCII en diferentes sistemas de numeración para luego insertar un retorno de carro al final de cada línea «\n«.
Comando «look»:
Si por ejemplo necesitamos buscar palabras que tengan un prefijo común, por ejemplo «oft», introducimos «look oft» lo cual devuelve unas cuantas palabras… en inglés (often: a menudo, frecuentemente). Si bien indica que depende de la configuración que tengamos en ENVIRON (por ejemplo podemos ver cual lenguaje tenemos configurado si tecleamos echo $LANG) siempre utiliza el idioma inglés por defecto. Para buscar una lista de palabras en idioma castellano deberemos especificar que usaremos el diccionario ubicado en /usr/share/dict/spanish. ¿Utilidad? Tal vez querramos hacer un ataque de fuerza bruta a una contraseña usando palabras comunes, quien sabe.
Comandos «wall» y «write»:
Con wall podremos enviar un mensaje a todos los que estén conectados o conectadas por cónsola, quieran o no recibir el mensaje. Por el contrario, si queremos enviar a un usuario específico usamos el comando write acompañado del nombre de usuario y la erminal donde esté conectado. Para saber quiénes están en línea usaremos who.
Otros comandos poco conocidos:
lorder, ul.
Comandos que se deben instalar desde repositorios oficiales.
Para los que «montamos» páginas web siempre es útil ocultar las extensiones de nuestros archivos a ser servidos y así despistar a posibles atacantes pero es mejor aún para que nuestros usuarios les sea más fácil recordar nuestras secciones e incluso promociones publicitarias, ¿ya tenemos vuestra atención?
No, no estamos de osos e hibernación sino de la metáfora entre el comportamiento animal y las computadoras: se trata de «dormir» a la computadora escribiendo todo lo que está en memoria RAM a un área especial en nuestro disco duro, tras lo cual podemos hasta desenchufar nuestro equipo y cuando de nuevo lo necesitemos quedaremos exactamente con los mismos programas y documentos abiertos justo donde los dejamos.
Antecedentes.
En los lejanos tiempos cuando no teníamos interfaz gráfica (podéis saber -o recordar- más en nuestros anteriores artículos sobre bash y sobre ingeniería social) pues tenía poco sentido el hablar de este proceso de hibernación. Pero es que hay más: los equipos XT tenían un simple interruptor que cortaba la energía, apagando de golpe a la computadora y perdiendo datos (ni hablaremos que los discos duros tipo IDE tenían que «parquear» el cabezal para no dañar los platos). Pero con el advenimiento de los equipos AT se incorporó más bien un botón lógico que cuando uno lo presiona el BIOS de la tarjeta madre se comunica con el sistema operativo -moderno- para entonces así poder apagar, cerrando y guardando debidamente los documentos y programas abiertos. Adicionalmente -y esto aplica a los monitores también- se les colocó una función de «dormir» lo cual hace que la máquina trabaje a una velocidad mínima a la espera de un evento determinado -pulso de tecla, movimiento de ratón, mensaje por tarjeta de red, etc.- logrando ahorrar energía. Dicha función se activa automáticamente cada cierto tiempo predeterminado y así se ahorra, a nivel mundial, de muchísima energía eléctrica.
Pero fueron las computadoras portátiles las que más se beneficiaron pues permite alargar el tiempo que trabajan con una sola carga de batería e incluso hay planes más detallados y específicos que poner a «dormir» al equipo: disminuye el brillo en pantalla, deshabilita uno o más núcleos en el CPU (ahora casi todos los equipos son doble núcleo de 64 bits), apagar la red inalámbrica, apagar el disco duro, etc.
En el caso de la hibernación es el ahorro máximo de energía: apagar el equipo para luego encenderlo muy rápidamente y justo donde estabamos trabajando, de paso ahorrando tiempo y como dijimos, se trata de escribir todo lo que está en memoria al disco duro.
¿Por qué Ubuntu no trae la opción de hibernación activada?
Pues ya saben la historia, a las computadoras se les agregó las opciones de «dormir» e «hibernar» para cumplir normas medioambientales (y ahorro en nuestros bolsillos en nuestra factura por consumo de electricidad) pero resulta ser que cada fabricante impuso sus propios «chips» integrados en las tarjetas madres para cumplir dichas funciones. Ellos, para proteger sus «secretos industriales y de manufactura», no explican a ciencia cierta cómo funcionan y son pocos los fabricantes que se dedican a trabajar de la mano con los desarrolladores de sistemas operativos. En el caso de Ubuntu fue a partir de la versión 12.04 que tomaron la salomónica decisión de deshabilitarlo (en Debian viene por defecto activado): son pocos los hardwares que son certificados para trabajar con Ubuntu y la base de datos para llevar cuenta de ellos es gigantesca y engorrosa, un trabajo a todas luces de evitar.
¿Y qué es un hardware certificado para trabajar con Ubuntu?
Pues son ordenadores que garantizan que al hibernar no perderemos absolutamente ninguno de nuestros datos, recordemos que todos los GNU/Linux son sistemas operativos estables y confiables y no se arriesgan a perder su reputación simplemente porque la mayoría de los fabricantes de niegan a vender hardware libre (aunque esto también desaliente a las empresas que trabajen por cerificar su hardware con Ubuntu).
¿Y quienes se benefician del proceso de hibernación?
Pues obviamente los equipos de escritorio y portátiles porque las versiones Ubuntu Server para nada ahorran energía: son equipos que trabajan las 24 horas del día. No obstante el software libre nos permite sin ningún problema el convertir nuestros ordenadores de uso diario como servidores de bases de datos, servidores web, etcétera y si éste es vuestro caso pues olvidad la opción de hibernar.
Requisitos para la hibernación.
Pues antes de entrar más en detalles debemos asegurarnos no sólo que tenemos espacio libre en disco duro del mismo tamaño de nuestra memoria RAM, sino que incluso contemos con una partición de intercambio especialmente hecha para ello, y en inglés recibe el nombre «swap» (no confundir con la partición para archivos temporales). Generalmente si escogimos que nuestra distribución Linux ocupe todo nuestro disco entonces habrá particionado nuestro disco duro con los valores adecuado a nuestro hardware.
Pero si fuimos nosotros quienes decidimos los valores de partición debemos revisar, en todo caso nunca está demás consultar dichos valores así que nos arremangamos las mangas de la camisa y abrimos una venta terminal y escribimos lo siguiente:
cat /proc/swaps
Como ya sabemos el comando cat sirve para visualizar el contenido de un archivo y en GNU/Linux todo es un archivo (sin caer en el tema de systemd) y la partición de intercambio tiene su archivo que lo representa. El que consultemos un archivo, ya sea por pantalla, impresora, terminal remota, etc. no representa ningún problema para nuestro ordenador, es decir no desconfiguramos nada (lo peor que nos puede pasar es que no tengamos derecho de lectura del archivo en cuestión).
Pero si queremos ir más allá podemos usar el comando swapon el cual está disponible desde 1995 (apareció en 4.0BSD) y forma parte de las utilerías de Linux. Dicho comando ofrece opciones de reporte y la primera que usaremos es:
swapon -s
o en su versión «larga» -que nos permite memorizarla mejor-:
swapon --summary
Esta opción hace exactamente el mismo trabajo de cat que indicamos al principio y así explícitamente lo indica la ayuda de swap (tecleamos «man swap» -y podemos usar el comando man para obetener ayuda de cualquier otro comando de Linux-). Con el comando swapon también podemos activar o descativar el área de intercambio pero exige conocimientos exactos de nuestro hardware para poderlo ejecutar correctamente, recomendamos mucha precaución si se deciden a ir más allá.
Hay muchos otras muchas herramientas (mirad los enlaces consutlados para hacer esta entrada) pero con 3 creemos es más que suficiente en nuestra labor didáctica, dicho tercer comando es free que nos permite ver tanto en Gigabytes, Kilobytes o Megabytes (las letras iniciales son los parámetros del comando) de nuestra memoria física y el área de intercambio -en realidad sirve para la memoria RAM pero como están intimamente relacionadas con el área de intercambio pues se incluye en los resultados-:
free -g
free -k
free -m
Acá mostramos una captura de nuestra ventana terminal:
Otra alternativa es utilizar la interfaz gráfica pulsando la tecla ALT+F2 y escribimos (en Ubuntu) «disco» y automáticamente nos listará las aplicaciones debajo de la linea de comandos -si usan Debian escriban palimpsest – y hacemos click en la utilidad de discos, verán algo parecido a esto:
Como vemos también nos informa del estado del disco duro, temperatura etc.
Probando si nuestro equipo es compatible con hibernación.
La manera pragmática de determinar si nuestro equipo soporta el proceso de hibernación es tener unas cuantas aplicaciones abiertas con datos sin importancia (navegador web, gedit editando una nota, algún reproductor de música) tras lo cual ejecutamos en nuestra línea de comandos lo siguiente:
sudo pm-hibernate
Al presionar la tecla intro nuestro ordenador, según la cantidad de aplicaciones abiertas, la cantidad de memoria RAM y tipo de disco duro, tomará de unos cuantos segundos hasta un minuto. Luego de que se hayan apagado todas las luces y ventiladores esperamos unos 10 segundos y procedemos a encender por su correpondiente botón.
Una vez haya arrancado de nuevo verificamos si nuestras aplicaciones de prueba están en pantalla, si suena la música, el estado de conexión de red; puede ser que parpadee la pantalla una o varias veces, movemos el ratón y observamos cuánto tarda en responder.
Si hemos llegado hasta aquí sin problemas…
Pues ¡enhorabuena! Nuestro ordenador es compatible con la hibernación ahora procederemos a habilitarlo y describiremos el proceso general pero cambiaremos los valores de acuerdo a la versión de Ubuntu que tengamos instalado:
Vamos a crear un archivo llamado «com.ubuntu.enable-hibernate.pkla«.
Dicho archivo lo guardaremos en la siguiente ubicación: » /etc/polkit-1/localauthority/50-local.d«
Debemos hacerlo con derechos de usuario raíz o «root» con «sudo su«.
Reinciamos el equipo y verificamos que nos aparezca la opción correspondiente, veremos algo como esto:
Si usamos Ubuntu 13 o anterior:
Procedemos a abrir una ventana terminal y ejecutamos lo siguiente:
y luego rellenamos con esto (sientanse libres de copiar y pegar):
[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
Si usamos Ubuntu 14:
Deberemos rellenar el archivo con esto:
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
Si tenemos Ubuntu 16:
[Re-enable hibernate by default for login1]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes
[Re-enable hibernate for multiple users by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
Observaciones importantes del archivo de marras:
Ahora que conocemos el archivo que permite la hibernación hemos de considerar lo siguiente: las lineas que comienzan por «Identity», «Action» y «ResultActive» como bien pueden observar son las mismas para las versiones de Ubuntu lo que si que es diferente son las etiquetas que las encabezan. Es de notar también que el identado es importante para dichas líneas pues son en jerarquía «hijas» de las etiquetas. Además los nombres de las etiquetas son muy específicas para cada versión de Ubuntu, bueno cada cabeza es un mundo e imaginamos que son muchos y diferentes programadores que han trabajado sobre Ubuntu y que siempre debemos tener siempre en mente que en el campo del software libre nada está escrito sobre piedra, es decir: ¿nos molesta que cada versión de Ubuntu tenga sus diferencias particulares de una a otra según las liberan? El software libre nos permite descargar el código fuente, modificarlo y compilarlo para nuestra propia metadistribución, es decir, es el mismo Ubuntu con pequeñas variaciones (pero si dichas variaciones afectan de algún modo o manera a las aplicaciones que se ejecutan debemos compilar también dichas aplicaciones adaptadas y publicar nuestro propio repositorio para nuesta metadistribución ¿A ver quién se anima a trabajar en ello? Hay gente que conozco que lo hacen, ¡tienen mucho esfuerzo y tenacidad en sus convicciones!).
Si tenemos un ordenador portátil.
En las computadoras portátiles al cerrar su tapa, el comportamiento predeterminado es «dormir» o suspender pero podemos cambiar ese comportamiento siempre y cuando hayamos probado varias veces que la hibernación funciona correctamente:
Abrimos una venta terminal e introducimos lo siguiente:
sudo nano /etc/systemd/logind.conf
Buscamos la línea que contiene «#HandleLidSwitch=suspend» y la sustituimos por «HandleLidSwitch=hibernate» (nótese que eliminamos el caracter almohadilla y cambiamos «suspend» por «hibernate».
Guardamos el archivo y reiniciamos.
¿Qué problemas podemos enfrentar?
Actualizado el jueves 10 de noviembre de 2016.
Pues pusimos a hibernar nuestro ordenador y al regresar de nuestro trabajo en la calle encendimos y nos mostraba este mensaje:
Ocurrio un error al montar /boot/efi.
Pulse S para no montar o M para una reparación manual.
Al escoger la opción «no montar» pues acepta contraseña pero al no tener acceso al disco duro pues regresa a la pantalla de inicio de sesión. Al escoger la opción de reparación manual «cae» con credenciales de «root» y al introducir:
sudo apt-get update
no se ejecuta correctamente y sugiere el comando dpkg.
Aplicamos:
sudo dpkg --configure -a
y luego el comando «reboot» tras lo cual arranca correctamente. Suponemos que como tenemos configurada las actualizaciones del sistema operativo como «descargar e instalar automáticamente» pues estaba precisamente en ese proceso cuando la pusimos a hibernar.
Agradecemos a los amables colaboradores de Ubuntu-es.org por proporcionarmos la solución, podéis leer el caso en este enlace web.
Publicado el sábado 9 de abril de 2016. Actualizado el sábado 28 de marzo de 2020.
Por medio de Twitter uno se entera de muchas cosas, dejando a un lado el maligno cotilleo, claro está. Una de esas cosas buenas es conocer que existe «Pro Git Book» el cual fue escrito por Scott Chacon (empleado hoy en día en la empresa GitHub) y Ben Straub (quien ahora trabaja en la empresa Zendesk) sobre el famoso sistema de administración (de versiones) de código fuente que tal como su nombre pomposo indica, es un software orientado a mantener en orden nuestros «apuntes» (ea , que estamos en el siglo XXI y ya debemos dejar de hacer esto, que yo también lo hacía, perdonadme Romero):
VirtualBox 5.0.14 es la última actualización a la fecha de hoy 22 de enero de 2016, nosotros usamos intensamente este entorno de virtualización tanto para servidores en producción como servidores en desarrollo. Esta última versión hoy la descargamos e instalamos sobre los servidores de desarrollo y dentro de unas dos semanas que hayamos probado su estabilidad y certeza de rapidez y eficiencia, será aplicado a los de producción.
¿FreeCAD en Ubuntu? ¿Por qué no en Debian? Primero debemos explicar qué es FreeCAD: es software libre especialmente realizado para dibujar objetos en tercera dimensión, más que todo piezas mecánicas, siempre teniendo en cuenta las normas internacionales «standards» para interoperabilidad con miríadas de otros programas de Diseño Gráfico Asistido (DGA o como se conoce en inglés «Computer Assisted Design» -en castellano quien nos asiste es el ordenador mismo-).
Retrocediendo en el tiempo, la experiencia que tenemos en dibujo asistido por computadora se remonta a 1991, cuando por aquel entonces existía el AutoCAD 2.62 -en realidad comenzamos con la versión 2.17 pero necesitabamos AUTOLISP y nos migraron a la que lo soportaba, aunque tampoco era la última versión disponible para la fecha-. Honor a quien honor merece: Autodesknos dio a las masas el impulso necesario para arrancar a «soñar» y hacer más en menos tiempo (pueden ustedes descargar un demostrativo e instalar dicho programa de software privativo en este enlace, vamos que el mundo es muy grande y cabemos todos, valga la «cuña publicitaria»). Claro, faltaban unos cuantos años para que el internet se masificara, pero esa es otra historia.
Es así que con la utilización de LISP -el segundo lenguaje de programación de alto nivel más viejo, después del FORTRAN– ya en esa empresa de software apuntaban alto, APUNTABAN A LAS NORMAS ABIERTAS, o estándares abiertos. Eso permitió que los dibujos que hicimos -y que quemaron nuestras pestañas con los monitores de rayos catódicos brillando en verde- bajo el formato DWG (abreviatura de «drawing», en inglés) que tenía «incrustado» el formato DFX (más delante explicaremos esto) y aún hoy en día puedan ser leídos e interpretados, porque son en realidad gráficos vectoriales. Dicho formato fue creado en 1982 y como comprenderán faltaban un montón de años para que surgiera GNU/Linux -pero Richard Stallman fue presionado legalmente a usar software privativo, lo cual fue la gota que derramó el vaso al año siguiente-.
De 1982 a 1997 fueron 15 años muy interesantes que nos tocó vivir en esto de la programación y fue en 1998 (por avatares de la vida ya no teníamos trabajo alguno, desde hace años, en diseño de piezas mecánicas, la crisis económica del país era grave) cuando nace la «Open Design Alliance» una organización sin fines de lucro orientada a promover la interoperabilidad de software PERO sigue siendo aún software privativo. De nuevo repetimos, en este mundo cabemos todos y sobra espacio, el universo es infinito. Líneas arriba pueden leer -en inglés- la historia de dicha organización.
Por supuesto que el mundo es muy grande, y hay otras alternativas de Software, tal es el caso de LibreCAD el cual es una bifurcación o «fork»? como le dicen en inglés, de el QCAD el cual nació en 1999 a partir del código de CAM Expert. Por cierto en el siguiente «tuit» ofrecen un enlace de un artículo sobre LibreCAD que reseña que fue creado en 1980, lo cual es incorrecto, lo que sí es cierto es que el formato de archivos, bajo software libre si que data de esa época, más o menos.
Al punto que queremos llegar es el siguiente: el mundo del CAD privativo dio levemente su brazo a torcer con el formato DFX secundado de manera nada amistosa por el OpenDWG -ahora conocido como DWGDirect– y el mundo del CAD libre también dio levemente su brazo a torcer con LibreDWG y esta serie de condiciones han abierto el camino para el nacimiento de FreeCAD.
Esa es la manera más simple de resumir y explicar 33 años de historia moderna del CAD: muchos compañeros de estudio no están de acuerdo con estas lineas escritas más poco se alejan de lo comentado aquí; apenas detalles, lo consideramos así. 😉
Pasamos a explicar entonces que Debian es software libre purista, muy comprometido con el código completamente abierto a diferencia de Ubuntu que permite de manera predeterminada muchísimos tipos de licencias de software. Por eso si desarrollamos diseño gráfico, artes o diseño asistido por computadora necesitamos hardware de video poderoso, escribo estas líneas con una modesta «GeForce GT 520/PCIe/SSE2» -que para la tarea de dibujar que tenemos basta- Ubuntu provee y permite usar tanto controladores de hardware privativo como libre, tenemos la libertad de elegir en ese aspecto. Ya ven entonces de dónde proviene el título de esta entrada «FreeCAD en Ubuntu», y nos disculpan la larga explicación.
¿Por qué usar controladores privativos en ciertos casos?
Resulta ser que hay al menos tres grandes y principales fabricantes de tarjetas de video para nuestro trabajo gráfico -y juegos-: Intel, AMD y nVidia. Los tres han levemente contribuido al software libre, ya que cada día somos más que usamos GNU/Linux y pues sienten la presión de nosotros, los consumidores de tecnología para nuestro trabajo y que hacer diario, MÁS SIN EMBARGO NO HAN LIBERADO NI DADO APOYO TOTAL. Y he aquí que una de las personas que más admiro es Sarah Sharp, quien desarrolló los controladores de USB 3.0 en GNU/Linux y estuvieron disponibles primero, incluso, que sus contrapartes privativos -la historia es larga- y tomo de ella un pequeño consejo si deseaís usar controladores libres:
Graphics linkspam of the week: How to report Intel bugs and an analysis of Grand Theft Auto V: https://t.co/RwftzU5Ynb
Allí, en inglés, la lengua materna de ella, describe cómo podemos nosotros ayudar y contribuir a reportar las excepciones -«bugs» en inglés- de las tarjetas de video en software libre, haciendo un reporte muy técnico para ir al grano y permitir que los desarrolladores sigan haciendo, prácticamente, ingeniería inversa. En ese caso le toman el defecto a una escena de un famoso juego -objetable moralmente, pero bueno, así somos los humanos, libre albedrío- y para un hardware Intel PERO NO SE DEJEN LLEVAR POR EL «TUIT» O MENSAJE si leen con calma y siguen los enlaces que publica Sarah Sharp verán que es aplicable a diversos hardware, hasta en tarjetas gráficas integradas en las tarjetas madre, aunque un poco complejo verán una serie de herramientas para tal efecto.
Como apenas estamos comenzando a utilizar el FreeCAD es necesario presentarselos y buscando en la red hallo muy interesante y ameno el trabajo del señor Juan Gonzáles Gómez quien tiene 40 video tutoriales sobre esta aplicación de diseño gráfico y les traemos la presentación de la serie:
Si quereís conocer a fondo el trabajo tridimensional e incluso aprender a utilizar las impresoras de tercera dimensión les animo a visitar la lista de videos, muchas gracias sr. Juan Gonzáles Gómez. Como reconocimiento a su trabajo les dejo el vídeo del logotipo de su Academia, dejad que la Fuerza os acompañe:
FreeCAD, instalación en Ubuntu.
La instalación de FreeCAD está muy bien documentada -en inglés- en este enlace y en nuestro caso se cumplió exactamente como enuncian: si instalamos a FreeCAD por los repositorios oficiales de Ubuntu -o por el Centro de Software- NO obtendremos la última versión. Inicialmente obtuvimos la versión 0.14 al introducir la siguiente orden:
sudo apt-get install freecad
Por lo tanto debimos actualizar por el propio repositorio de FreeCAD, ganando acceso como usuario raíz «root» en una cónsola de comandos:
Si todo sale bien obtendremos al aviso de que fue agregado exitosamente el repositorio (si desean concer más acerca de los PPA hagan click en este enlace -en inglés-) y veremos algo así como esto:
Ahora bien, lo siguiente que hay que hacer son las consabidas siguientes 2 líneas:
sudo apt-get update
sudo apt-get upgrade
Y por último la orden en sí misma para instalar FreeCAD:
sudo apt-get install freecad freecad-doc
Y veremos algo parecido a los siguientes mensajes (como ya teníamos instalada la versión 0.14 nos avisa que podemos eliminar los archivos con las versiones que no son necesarias para la versión 0.15, la eficiencia por delante para mantener nuestros discos duros «lo más limpios posible»):
Nos anuncia que necesita descargar archivos necesarios para los paquetes nuevos y cuyo tamaño es de 106 megabytes (recordar que estamos actualizando y son menos datos «a bajar»):
Tenemos 2 minutos de paciencia mientras obtenemos los datos:
Y comienza el proceso de instalación:
Mientras hacíamos todo esto olvidamos cerrar una instancia del FreeCAD 0.14, Ubuntu no aviso nada de que debíamos cerrarlo, pues no hay problema alguno, cerramos la ventana que teníamos abierta y lo volvemos a ejecutar para ver lo siguiente:
Si agudizamos nuestra visión leemos «Running FreeCADGuinit.py» -entre tantos avisos que muestra al ejecutarlo- pero lo que queremos hacer notar es la extensión «.py» del archivo que carga en memoria, archivo leido: está escrito en lenguaje Python. De hecho ese lenguaje Python junto con lenguaje C, «son los padres de la criatura» y nos dejaron Python para nosotros los usuarios finales el poder correr macros y guiones, tal como lo fue el AUTOLISP al Autocad (¿recuerdan los párrafos iniciales donde dijimos que estaba adelantada a su tiempo y tenían visión de futuro?). Ya para finalizar y comenzar a dibujar y entregar el proyecto (¡uff lo que tenemos por delante!) pues agregar que «matamos dos pájaros de un solo tiro»: compartimos el conocimiento para instalar las herramientas necesarias para nuestro trabajo. ¡Qué bueno es el software libre! 😎
Actualización no más de haber terminado de publicar esta entrada de blog:
El señor Juan González @Obijuan_cube «imprime» las primeras piezas de resina, ¿Habrá utilizado FreeCAD? Lo más probable es que sí, pero no vamos a importunarle en preguntarselo, je je je.
En un excelente análisis de las diversas opciones de diseño asistido por computadora en software libre, en idioma italiano, podemos tener rápidamente un panorama acerca de esta materia. La entrada del blog la pueden encontrar en este enlace web y paso a traducir al castellano el resumen para Freecad:
Ventajas:
Entorno intuitivo y familiar para los usuarios con una amplia experiencia en software comercial.
Versátil y ligero, especialmente en sus versiones para GNU / Linux.
Máxima adherencia a los estándares.
Personalización y creación de productos y servicios específicos prácticamente ilimitadas.
Comunidad muy activa y multidisciplinaria.
Excelentes perspectivas para el futuro.
Desventajas:
El crecimiento rápido pero un poco ‘»caótica».
La falta de un servicio profesional (no ser gobernado por una empresa).
Todavía algunas limitaciones en el uso extremadamente avanzada.
Aún lejos de la versión 1.0 (debido a la estabilidad parece imposible, pero aún está en versión alfa).
È un piacere iniziare a collaborare con @TechEcon 🙂 Iniziamo col mio pane quotidiano, gli strumenti CAD Open https://t.co/oALRqWpLYF
Ubuntu 15.10 Wily Werewolf, actualización, no voy a negar que Ubuntu, basado en Debian, es infatigable en su avance, tiene sus detractores pero sigo pensando que simplemente este hombre lobo llegó para dar una DURA pelea a los demás sistemas operativos no GNU/Linux.
Si bien recuerdo el mensaje decía 700 megabytes de datos en la actualización mayor, incluso pidió reiniciar, cosa rara en sistemas GNU/Linux pero bueno «una vez al año no hace daño» 😉 :
Ubuntu 6.10 32 bits (año 2007 y reinstalado en 2015 por medio de una máquina VirtualBox): un CD que recuperé del baúl de los recuerdos el cual le hice una imagen ISO con Brasero (recuperado en un 99,9% a pesar de haber estado más de 48 horas leyendo y releyendo) y la utilidad de disco confirma los defectos en la imagen grabada. También tiene utilidad de comprobación de memoria RAM, la ejecuté también, todo está en el video.
Por allá en el 2004 tenía una computadora que compré ya armada y me vendieron una marca infame de tarjeta madre (yo recomiendo las marcas Foxconn, Asus y Gigabyte con los ojos cerrados) y dicha tarjeta madre dejó de reconocer disco duro alguno en el 2007, pero al menos si arrancaba desde CD (en aquella época era una novedad en Venezuela el DVD interno para computadora, el cual era el primero de mi propiedad y de paso era quemador también). Así que para no darle más vueltas a ese asunto descargué el Ubuntu y usaba el live CD y guardaba en memoria USB (pendrive). Esa computadora a la final la desarmé y vendí por partes pero como no hay mal que por bien no venga me introdujo a mi primera experiencia real con el Software Libre, submundo Linux.
Para probar la imagen ISO de Ubuntu Server que descargué por medio de Bittorrent desde la web oficial y con ayuda de VirtualBox y asignándole 512 megabytes de RAM y 2 procesadores procedo a probar esta opción del software libre.
Generalmente uso ese protocolo (Bittorrent) para descargar a la velocidad máxima que me permite mi proveedor de internet (ISP) y luego compartir y ayudar a los demás también a descongestionar los servidores oficiales; ahora que lo pienso debería existir un protocolo parecido para los repositorios, sería cuestión de sentarse a programar sobre las normas ya establecidas y juntarlas para ampliarlas. Investigando un poco por Google he descubierto que existe «BitTorrentSync» un proyecto llevado a cabo por Leo Moll @tuxpoldo que permite crear archivos .torrent de manera dinámica (o al menos eso entiendo) sobre cualquiera de nuestros archivos almacenados, de manera tal que si los actualizamos automáticamente se compartirán las nuevas versiones sin necesidad de descargar archivos .torrent adicionales -según traduzco yo de esta página web-.
Mi idea sería que nosotros mismos tengamos varios servidores de repositorios esparcidos geográficamente de manera esclava conectados a un servidor maestro que a su vez sea espejo de uno (o varios) repositorios oficiales. Plantearlo suena fácil pero por las peripecias que cuentan otros usuarios, tiene su trabajo configurar rsync el cual se utilizaría para configurar nuestro repositorio maestro.
¿Le estoy buscando 5 patas al gato, pudiendo usar rsync para todo? Pues mi idea es traer el (los) repositorio(s) que necesitemos a territorio venezolano y al tenerlo actualizado compartirlo rápidamente con nuestros propios repositorios que montemos (esparcidos) y luego invitar a quien quiera a compartir sin mayor compromiso y/o carga de trabajo a nuestro repositorio espejo maestro.