Secretos de ps
7. May 2011
admin
Bueno, no es para tanto, pero es un dato útil: a veces es difícil acordarse de memoria todas las columnas de ps, bien, para eso está la opción “–headers”, por ejemplo:
ps aux --headers
Artículos Técnicos | 0 Comments »
Probando Fedora 15 beta
24. April 2011
admin
Salió Fedora 15 beta, tiene un núcleo 2.6.38.2-9, mucho más actualizado que su predecesora (que usa una versión de la línea 2.6.35). Esto que implica por ejemplo que el módulo ath9k_htc soporta la placa wireless TP-Link WN821N v3, la cual es económica y soporta la norma 802.11n.
Interesante para ir probando varias cosas, por ejemplo GNOME Shell y Gnome 3
Y también se puede ver algo en este pequeño video:
¿Todavía usando Windows? Bueno…. existe VLC, programa libre para ver videos…
Tuve que soportar algún que otro cuelgue en esta versión beta de Fedora, lo cual no es tan alarmante teniendo en cuanto que no está pensada todavía para producción. ¿Quedó claro que es beta?
Artículos Técnicos | 0 Comments »
Neutralidad…mmmm
25. March 2011
admin
“La imparcialidad es un pomposo nombre para la indeferencia, la cual es un elegante nombre de la ignorancia.” G. K. Chesterton
Si bien no se relaciona exactamente, esta cita me hace pensar en los esfuerzos que a veces se realizan con el afán por ser equidistante, querer conformar, contrabalancear torpemente algo para que alguna parte no se ofenda, mostrarse políticamente correcto, alegando un “centrismo”, o sino también, estar al margen de las discusiones. Tal vez en muchos aspectos, la neutralidad no sea ese refugio inocente que parece ser…
Intentos de reflexión | 0 Comments »
Otro delirio de Lilita
13. March 2011
admin
No conforme con sus ya conocidas profecías cataclísmicas, Lilita Carrió una vez abrió su boca para decir una sandez ante un par de marionetas que hacen las veces de periodistas en TN.
No se cansa de la cantidad de dislates que emite, como decir que Menem al lado de Kirchner parece Illia y aun de coquetear con un colombiano pelirrojo que repite slogans vacíos.
Esta vez dijo palabras más, palabras menos, que un día la gente dejó de pensar en Alemania y Hitler ganó por el 60%.
Lo más terrible es que el par de payasos no objetaron (¿será por ignorancia) nada en absoluto. Y el televidente incauto probablemente cree esa fábula.
En primer lugar, ni Hitler ni el nazsimo surgieron de un día al otro, la gente no dejó de pensar repentinamente. Fue una acción meticulosa de quince años, de parte de personas tan disciplinadas y constantse como malvadas. (PORQUE LA DISCPLINA Y LA CONSTANCIA POR SI MISMA PUEDEN RESULTAR MERAMENTE BASURA).
En segundo lugar, el nazismo nunca consiguió el 60% de los votos en Alemania, no fue algo tan lineal ni de ribetes infantiles tal como Carrió suele inundar sus declaraciones cada vez más absurdas. El 5 de enero de 1933 el nazismo ganaba por el 43,9% de los votos y aun así no obtenía la mayoría parlamentaria. Mucha gente perdió la vida o fue al exilio luchando para evitar que ese régimen dictatorial se cristalice, realizando un sacrificio que ridiculiza actitudes como la de esta señora visitando el programa de Todo Negativo.
Intentos de reflexión | 0 Comments »
Sistemas de construcción de paquetes (Parte 4)
12. March 2011
admin
De acuerdo a los resultados, podría verse que autotools sigue siendo el “Build System” predominante. Otros paquetes todavía usan un makefile plano, tal vez merezcan un análisis aparte.
Limitaciones de estas estadísticas:
- Se confía en que siempre que se usa CMakeList.txt se usa cmake.
- Se confía en que siempre que existan los archivos configure.ac o configure.in y Makefile.am o Makefile.in y se encuentra en el archivo spec el procedimiento ./configure && make se usan las autotools
- Hubo 1 (un) archivos que no pudieron ser inspeccionados por dtrx porque tenía la extensión incorrecta
Sistema de construcción de paquetes (Parte 3)
Artículos Técnicos | 0 Comments »
Sistemas de construcción de paquetes (Parte 3)
12. March 2011
admin
Los resultados son:
37 paquetes con autotools: Son paquetes en los cuales se encontaron los archivos configure.ac o configure.in y Makefile.am o Makefile.in
5 paquetes con cmake: Son paquetes que tienen el archivo CMakeLists.txt
21 paquetes con “sólo” [Mm]akefile, que no tienen los archivos arriba mencionados
36 paquetes con “autotools procedure”: Paquetes que siguen la secuencia “./configure && make”
En la próxima las conclusiones
Artículos Técnicos | 0 Comments »
Sistemas de contrucción de paquetes (Parte 2)
12. March 2011
admin
El siguiente paso fue descomprimir de manera recursiva los paquetes, para luego poder inspeccionar en ellos. Lo hice con una herramienta poco conocida dtrx. Lo interesante de este script de python es que puede realizar extracciones recursivas y de acuerdo a la extensión del archivo utiliza el software de extracción necesario. Esperemos que pronto esté en los repositorios de Fedora (ver la solicitud en Red Hat Bugzilla).
Una vez descompridos todos los paquetes, se corrió el siguiente script
#! /bin/bash
#Very simple script to get Build System Statistc
dir=$1
rm -f /tmp/ant /tmp/cmake /tmp/autotools /tmp/makefile /tmp/autoconf /tmp/autoconf /tmp/autotools_procedure
for i in $(find $dir -maxdepth 1 -mindepth 1 -type d)
do
#autotools
ls -R1 $i | grep -q -P -m1 "^configure\.(ac|in)$"
if [[ $? -eq 0 ]];then
ls -R1 $i | grep -P -q -m1 "^Makefile\.(am|in)$"
if [[ $? -eq 0 ]];then
echo "${i##*/}" >> /tmp/autotools
cant_autotools=$(($cant_autotools+1))
else
echo "${i##*/}" >> /tmp/autoconf
cant_autoconf=$(($cant_autoconf+1))
fi
fi
#cmake
ls -R1 $i | grep -q -m1 CMakeLists.txt
if [[ $? -eq 0 ]];then
cant_cmake=$(($cant_cmake+1))
echo "${i##*/}" >> /tmp/cmake
fi
#Plain makefile
ls -R1 $i | grep -q -P -m1 "^configure\.(ac|in)$"
if [[ $? -ne 0 ]];then
ls -R1 $i | grep -q -P -m1 "^(Makefile\.(am|in)|CMakeLists.txt)$"
if [[ $? -ne 0 ]];then
ls -R1 $i | grep -q -P -m1 "^Makefile$"
if [[ $? -eq 0 ]];then
cant_makefile=$((cant_makefile+1))
echo "${i##*/}" >> /tmp/makefile
fi
fi
fi
find $i -name "*.spec" | xargs pcregrep -M "%build(.*\n)*(./|%)configure.*\n(.*\n)*make(.*\n)*%install"
if [[ $? -eq 0 ]];then
echo ${i##*/} con autotools procedure
cant_autotools_build_section=$(($cant_autotools_build_section+1))
echo "${i##*/}" >> /tmp/autotools_procedure
fi
done
echo -e "$cant_autotools with autotools:\n\n$(cat /tmp/autotools)\n\n"
echo -e "$cant_cmake with cmake:\n\n$(cat /tmp/cmake)\n\n"
echo -e "$cant_makefile with makefile:\n\n$(cat /tmp/makefile)\n\n"
echo -e "$cant_autoconf with only autoconf:\n\n$(cat /tmp/autoconf)\n\n"
echo -e "$cant_autotools_build_section with only autotools_build_section\n\n$(cat /tmp/autotools_procedure)"
En la siguiente parte veremos los resultados….
Artículos Técnicos | 0 Comments »
Sistemas de Construcción de Paquetes (Parte 1)
12. March 2011
admin
Dentro de los sistemas de construcción de paquetes en los sistemas estilo Linux, el más conocido de ellos el GNU Build System, aka autotools.
Las autotools tienen la reputación de ser difíciles y abrumadoramente barrocas. Es por eso que han surgido sistemas alternativos siendo tal vez la más más popular cmake.
Es por ello que me propuse hacer una estadística, tal vez bastante rudimentaria acerca de los sistemas de construcción de paquetes.
Lo primero que hice fue ejecutar algo como esto:
repoquery -a --disablerepo=livna,rpmfusion-free,rpmfusion-free-updates --source | uniq | shuf -n 101 | sed 's/.src.rpm//g' | xargs yumdownloader --source
Con esto se consigue una muestra de 101 paquetes de los repositorios oficiales de Fedora 14.
Los paquetes son:
ailurus-10.10.3-1.fc14.src.rpm
alsa-oss-1.0.17-4.fc12.src.rpm
aplus-fsf-4.22.4-19.fc12.src.rpm
ar9170-firmware-2009.05.28-2.fc13.src.rpm
azureus-4.5.1.0-1.fc14.src.rpm
bitfrost-1.0.10-1.fc14.src.rpm
bwidget-1.9.0-1.fc13.src.rpm
cfitsio-3.250-5.fc14.src.rpm
congruity-14-1.fc13.src.rpm
dogtag-pki-ra-ui-1.3.2-1.fc14.src.rpm
drascula-international-1.0-3.fc12.src.rpm
dump-0.4-0.8.b43.fc14.src.rpm
dumpet-2.1-1.fc14.src.rpm
dx-4.4.4-16.fc14.2.src.rpm
easystroke-0.5.3-2.fc14.src.rpm
eblook-1.6.1-10.fc14.src.rpm
eclipse-jgit-0.10.1-1.fc14.src.rpm
emacs-common-tuareg-1.45.6-9.fc12.src.rpm
emacs-common-w3m-1.4.398-0.4.20100714cvs.fc14.src.rpm
emacspeak-29.0-3.fc12.src.rpm
fedora-packager-0.5.5.0-2.fc14.src.rpm
FlightGear-2.0.0-4.fc14.src.rpm
fmtools-2.0.1-2.fc13.src.rpm
func-0.25-3.fc14.src.rpm
gambas2-2.22.0-1.fc14.src.rpm
gbirthday-0.6.5-2.fc14.src.rpm
gedit-plugins-2.31.6-1.fc14.src.rpm
gfs-pyrsos-fonts-20090618-3.fc13.src.rpm
globus-gatekeeper-5.5-2.fc14.src.rpm
globus-gram-job-manager-10.59-2.fc14.src.rpm
globus-gram-job-manager-setup-sge-2.5-1.fc14.src.rpm
gmm-4.0.0-1.fc14.src.rpm
gnomeradio-1.8-6.fc14.src.rpm
html2text-1.3.2a-6.fc13.src.rpm
i3lock-1.0-4.20100320git.fc14.src.rpm
isync-1.0.4-6.fc12.src.rpm
javasqlite-20100727-1.fc14.src.rpm
kdetv-0.8.9-13.fc12.src.rpm
kmid2-2.3.0-2.fc14.src.rpm
lcms2-2.1-1.fc14.src.rpm
libfreebob-1.0.11-6.fc12.src.rpm
libgalago-0.5.2-9.fc12.src.rpm
libmusicbrainz3-3.0.3-2.fc14.src.rpm
libotr-3.2.0-5.fc14.src.rpm
lilypond-2.13.39-3.fc14.src.rpm
makebootfat-1.4-11.fc14.src.rpm
man-pages-cs-0.18.20090209-9.fc14.src.rpm
metromap-0.1.2-5.fc14.src.rpm
mono-basic-2.6.2-1.fc14.src.rpm
mysql-5.1.55-1.fc14.src.rpm
mysql-connector-c++-1.1.0-0.4.bzr895.fc14.src.rpm
nedit-5.5-23.fc14.src.rpm
nemiver-0.7.3-3.fc14.src.rpm
nntpgrab-0.6.91-2.fc14.src.rpm
nogravity-2.00-11.fc13.src.rpm
ocaml-lacaml-5.4.7-2.fc13.src.rpm
ogre-1.6.4-5.fc13.src.rpm
openjpeg-1.3-10.fc14.src.rpm
orage-4.6.1-2.fc13.src.rpm
pam_abl-0.2.3-8.fc12.src.rpm
perl-Catalyst-View-PDF-Reuse-0.03-4.fc14.src.rpm
perl-CGI-Session-4.35-5.fc14.src.rpm
perl-Color-Calc-1.061-2.fc14.src.rpm
perl-Inline-0.46-1.fc14.src.rpm
perl-Mixin-Linewise-0.003-2.fc14.src.rpm
perl-MooseX-MethodAttributes-0.24-1.fc14.src.rpm
perl-Net-FTPServer-1.122-9.fc14.src.rpm
perl-Net-Patricia-1.19-1.fc14.src.rpm
perl-Package-Stash-XS-0.19-1.fc14.src.rpm
perl-Regexp-Assemble-0.34-5.fc14.src.rpm
perl-String-Escape-2010.002-4.fc14.src.rpm
perl-Text-Kakasi-2.04-13.fc14.src.rpm
perl-UNIVERSAL-exports-0.05-8.fc14.src.rpm
php-gettext-1.0.9-2.fc13.src.rpm
php-pear-CodeGen-1.0.7-3.fc14.src.rpm
postal-0.70-6.fc14.src.rpm
pyclutter-gtk-0.10.0-2.fc14.src.rpm
pyflakes-0.4.0-4.fc14.src.rpm
python-billiard-0.3.1-2.fc14.src.rpm
python-rabbyt-0.8.3-2.fc14.src.rpm
python-zope-sqlalchemy-0.6-1.fc14.src.rpm
redir-2.2.1-4.fc12.src.rpm
rhncfg-5.9.22-2.fc14.src.rpm
R-nws-1.7.0.1-1.fc14.src.rpm
rubygem-shotgun-0.4-1.fc14.src.rpm
R-zoo-1.6-3.fc14.src.rpm
sarai-fonts-1.0-9.fc14.src.rpm
sblim-cmpi-params-1.2.6-1.fc13.src.rpm
scim-1.4.9-6.fc13.src.rpm
shed-1.15-5.fc12.src.rpm
sugar-tamtam-0-0.6.20100201git.fc14.src.rpm
Thunar-1.0.2-3.fc14.src.rpm
veusz-1.9-2.fc14.src.rpm
vhd2vl-2.3-1.fc14.src.rpm
virt-what-1.3-3.fc14.src.rpm
w3m-0.5.2-18.fc14.src.rpm
wannier90-1.2-2.fc13.src.rpm
writer2latex-1.0.2-3.fc14.src.rpm
ws-jaxme-0.5.1-4.4.fc12.src.rpm
xmlfy-1.5.3-1.fc14.src.rpm
xpaint-2.9.8.1-1.fc14.src.rpm
Esta historia continúa
Artículos Técnicos | 0 Comments »
Autotools: Detrás de los famosos 3 pasos
5. March 2011
admin
La mayoría de los usuarios con conocimiento intermedios (o más) en Linux y sistemas similares habrá alguna vez compilado alguna vez un paquete con la siguiente secuencia de comandos:
./configure
make
make install
Lo que tal vez no muchos conocen es qué herramientas permiten realizar eso y menos aun como se hace para construir los famosos archivos con extensión .tar.gz o .tar.bz2.
Autotools
Se conoce popularmente como autotools al GNU Build System, es decir al conjunto de herramientas para construir paquetes instalables de software.
Si bien un aplicación o una librería puede ser instalada – al menos en principio – a partir de un relativamente sencillo Makefile, tiene en principio dos grandes limitaciones, puede resultar poco flexible para el usuario instalador y puede resultar poco portable.
Las autotools se usan para estandarizar el proceso de instalación. Si bien la curva de aprendizaje de estas herramientas es algo empinada, proporciona una sistematización en la instalación de software a partir de código fuente.
Si bien se han creado con el tiempo algunos sistemas de construcción de paquetes alternativos en los sistemas operativos Linux y similares, es la suite preferida de una gran cantidad de proyectos open source.
De ahí que la secuencia de instalación ./configure && make && make install sea ampliamente conocido por los usuarios de sistemas operativos estilo Linux.
Componentes principales de autotools
autoconf
Crea el célebre script de alta portabilidad configure a partir de un archivo de macros M4. El script configure permite:
- Personalizar la compilación (por ej: deshabilitar soporte para mysql)
- Verificar que los archivos necesarios para compilar están presentes en el sistema
- Imprimir mensajes descriptivos en cada caso
- Crear un archivo Makefile
automake
Es un script de perl que a partir de un archivo “template” crea un archivo Makefile.in que genera archivos que permite crear archivos Makefile compatibles con GNU Coding Standards.1
libtool
Simplifica la creación de librerías (en particular de las dinámicas). Esta herramienta permite crear un nivel de abstracción del tipo de host que se está utilizando y permite al usuario compilar librerías con el mismo método de los tres pasos nombrados con anterioridad.
Resumen
Muy sintética y simplificadamente, la tarea del “maintainer” del paquete es crear de manera consistente archivos configura.ac (para autoconf), Makefile.am (para automake), además de echar mano de ser necesario de marcos M4 para resolver la realización de una tarea (por ejemplo verificar la existencia un determinado header).
Es un sistema que apunta a ser lo más portable posible y hacer previsible y flexible la tarea de instalar paquetes fuente al usuario.
El objetivo principal es hacerle la vida más fácil al usuario antes que al maintainer.
Desde luego, el usuario final rara vez compilará un programa. Sin embargo, crear un paquete instalable a partir del código fuente es el paso previo para crear paquetes ya compilados generalmente en formato RPM o Debian, dependiendo de la distribución. Y las autotools juegan un rol importante en esa etapa intermedia.
1http://www.gnu.org/prep/standards/standards.html

Usuario final: ¿A qué nos referimos? is licensed under a Creative Commons Atribución-CompartirDerivadasIgual 2.5 Argentina License. La manera de reconocer los créditos es citando la URL de este sitio.
Artículos Técnicos | 0 Comments »
Usuario final: ¿A qué nos referimos?
5. March 2011
admin
Si hay un término complicado es el de usuario final. Más que nada porque suena realmente mal. La denominación usuario final tiene un fuerte transfondo impuesto por la sociedad de consumo: se refiere a una persona que meramente usa algo, se sirve de algo como el último eslabón de una cadena de producción, a la cual el no aporta aparentemente nada.
La palabra final también tiene tal vez cierta connotación trágica, algo terminal, algo que inevitablemente finaliza allí.
Por otro lado, es difícil encontrar otros términos alternativos, ya que en general hacen alusión a una carencia, por ejemplo,
- Usuario no técnicos
- Usuarios no-desarrolladores
- Usuarios no-programadores
- Usuarios sin conocimientos técnicos
Todos esas designaciones tal vez tengan alguna connotación peyorativa.
Por supuesto, sería injusto culpar al usuario porque no aporta nada a la cadena de producción del software. El usuario puede mediante el uso del software realizar un aporte a la sociedad de la que el solo él es capaz: por ejemplo, un científico usando un programa de análisis matemático.
Asimismo, pretender que quien usa una herramienta participe en el hacer de aquella sería absurdo, si quiero usar un destornillador, no quiero que nadie me exija a que participe en su fabricación.
Sin embargo, si la fabricación del destornillador produce una herramienta que contiene un producto tóxico o contaminante del medio ambiente, como usuario, ¿no tendré un grado de responsabilidad?
¿Y si hay una empresa que pretende monopolizar la fabricación de destornilladores?
Trasladando este caso al software: la mayoría de las computadoras se vende con software cuyo código fuente (dicíendolo burdamente: la receta) conoce solamente la empresa que ha impuesto un monopolio. Cada vez que alguien usa ese tipo de software, no sabe exactamente que es lo que realidad está haciendo. ¿Y si afecta la privacidad del usuario? ¿Cómo toca esto al denominado usuario final?

Usuario final: ¿A qué nos referimos? is licensed under a Creative Commons Atribución-CompartirDerivadasIgual 2.5 Argentina License. La manera esperada de dar crédito es citando esta fuente.
Intentos de reflexión | 0 Comments »
