viernes, marzo 11

Manteniendo más de una versión de python en ubuntu

Tratando de probar como corría un script con diferentes versiones de python, me encontré con update-alternatives, un sistema para mantener las diferentes "versiones" de distintos programas, que se puedan cambiar fácilmente, recordando donde se encuentran cada una de ellas.

Para agregar al sistema las diferentes versiones del programa (en mi caso, python):
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
update-alternatives --install /usr/bin/python python /usr/bin/python2.6 1


Para resumir un poco el manual, le decimos que vamos a instalar una opción ("--install"), el segundo argumento es el enlace simbólico (symlink) que se desea administrar (el nombre genérico del programa), el tercero es al grupo que agregaremos esta opción, el cuarto es la ruta que nos provee el programa real y finalmente un número para asignar prioridad, a mayor número, mayor prioridad.

Luego, cuando queremos cambiar de una versión a otra, simplemente hacemos
update-alternatives --config python
y el sistema nos muestra la lista de opciones que tiene registradas y pregunta que versión queremos utilizar.

Fácil y bonito! ;)

viernes, enero 28

Python NTP client

Después de buscar un poco como funcionaba el protocolo NTP (Network Time Protocol), no encontré una implementación que fuera simple de entender, así que decidí hacerme una propia. Necesitaba entenderla para implementarla en un "Single board computer" (un microcontrolador con periféricos) Encontré una implementación básica en ActiveState, pero no me respondía a que correspondía cada campo del paquete.

Continuando con la búsqueda, encontré la implementación de OpenBSD de su cliente NTP y en el archivo ntp.h hay una buena descripción de que es cada campo. También ayudaron algunas páginas como ésta y ésta.

Finalmente, llegué a una implementación, simple pero a la vez. La dejo a continuación.


#!/usr/bin/python
# NTP client class for python, based on OpenBSD's ntp C code and ActiveState code recipe 117211
# v 0.1 (2011-01-28) Initial release
# Features:
# Conversion from/to NTP timestamp
# Ability to query NTP servers
# Calculation of delay and offset

import socket
import struct
import time
TIME1970 = 2208988800L # seconds from 1900

def NTPtimestamp2time(ts):
# print '%016X' % ts
# print '%016X' % (ts >>32)
ia = (ts >> 32) - TIME1970
fa = ts & 0x0000FFFF
return float(ia)+float(fa)/2**32
def time2NTPtimestamp(time):
ia = int(time)
fa = int((time-ia)*2**32)
return (ia<<32 | fa)+(TIME1970<<32)

class ntpclient:
def __init__(self):
self.sockt = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
self.server = None
self.port = 123
self.data = '\x1b' + 47* '\0'
#packet fields
self.leapIndicator = None
self.versionNumber = None
self.mode = None
self.stratum = None
self.pollInterval = None
self.precision = None
self.rootDelay = None
self.rootDispersion = None
self.referenceIdentifier = None
self.referenceTimestamp = None
self.originateTimestamp = None
self.recieveTimestamp = None
self.transmitTimestamp = None
self.destinationTimestamp = None
self.keyIdentifier = None
self.messageDigest = None
self.keyAlgorithmIdentifier = None
self.messageHash = None
def poll(self,server=None):
if server == None:
return
self.server = server
self.sockt.sendto(self.makeReqPackt(),(self.server,self.port))
data,address = self.sockt.recvfrom(1024)
self.destinationTimestamp = time2NTPtimestamp(time.time())
# print len(data)
if data and len(data) == 60:
smallfields, \
self.stratum, \
self.pollInterval, \
self.precision, \
self.rootDelay, \
self.rootDispersion, \
self.referenceIdentifier, \
self.referenceTimestamp, \
self.originateTimestamp, \
self.recieveTimestamp, \
self.transmitTimestamp, \
self.keyIdentifier, \
self.messageDigest, \
self.keyAlgorithmIdentifier, \
self.messageHash = \
struct.unpack('!BBBBIIIQQQQI8s',data)

self.leapIndicator = smallfields & 0b11000000 >> 6
self.versionNumber = smallfields & 0b00111000 >> 3
self.mode = smallfields & 0b00000111

if data and len(data) == 48:
smallfields, \
self.stratum, \
self.pollInterval, \
self.precision, \
self.rootDelay, \
self.rootDispersion, \
self.referenceIdentifier, \
self.referenceTimestamp, \
self.originateTimestamp, \
self.recieveTimestamp, \
self.transmitTimestamp = \
struct.unpack('!BBBBIIIQQQQ',data)

self.leapIndicator = smallfields & 0b11000000 >> 6
self.versionNumber = smallfields & 0b00111000 >> 3
self.mode = smallfields & 0b00000111
def toCtime(mytime):
return time.ctime((mytime>>32)-TIME1970)

def offset(self):
# t1 = self.referenceTimestamp
# t2 = self.originateTimestamp
# t3 = self.recieveTimestamp
# t4 = self.transmitTimestamp

t1 = NTPtimestamp2time(self.originateTimestamp)
t2 = NTPtimestamp2time(self.recieveTimestamp)
t3 = NTPtimestamp2time(self.transmitTimestamp)
t4 = NTPtimestamp2time(self.destinationTimestamp)

return ((t2-t1)+(t3-t4))/2

def delay(self):

t1 = NTPtimestamp2time(self.originateTimestamp)
t2 = NTPtimestamp2time(self.recieveTimestamp)
t3 = NTPtimestamp2time(self.transmitTimestamp)
t4 = NTPtimestamp2time(self.destinationTimestamp)

return ((t4-t1)-(t2-t3))

def makeReqPackt(self):
leapind = 0b00
version = 0b100 # NTP V4
mode = 0b011 # client mode

# a = time.time()
# ia = int(a)
# fa = int((a-ia)*2**32)
# tt = (ia<<32 | fa)+(TIME1970<<32)
tt = time2NTPtimestamp(time.time())
#print '%16X' % TIME1970
#print '%16X' % tt

return struct.pack('!BBBBIIIQQQQ',
leapind <<6 | version <<3 | mode,
0, #unspecified stratum
0, #poll interval
0, # local clock precision
0, # root delay
0, # root dispersion
0, # reference clock identifier
0, #reference timestamp
0, #originating timestamp
0, #recieve timestamp
tt #transmit timestamp
)

if __name__ == '__main__':
from sys import argv
c = ntpclient()
# print repr(c.makeReqPackt())
# c.poll('time.tigo.cl')
c.poll(argv[1])
# print c.versionNumber
# print c.stratum
# print '%016X'%(c.referenceTimestamp)
# print '%016X'%(c.originateTimestamp)
# print '%016X'%(c.recieveTimestamp)
# print '%016X'%(c.transmitTimestamp)
# print '%016X'%(c.destinationTimestamp)
# print c.delay()>>32, c.offset()>>32
print c.delay(), c.offset()


Espero que le sirva a alguien.

jueves, agosto 19

Hammer: Instalando linux en un dispositivo embebido

Me compré un nail kit en TinCanTools, para experimentar que tal funcionaba correr un pequeño linux en un sistema embebido.

La cosa es que una vez que lo tuve, me propuse instalar el entorno de desarrollo en una máquina virtual con ubuntu minimal (pura consola), lo cual no anduvo tan suavemente como hubiese querido.

Siguiendo el paso a paso encontrado en el Hammer Hello World Tutorial ocurrieron un par de detalles que hubo que resolver antes de tener el entorno andando.

Primero, había que bajar las fuentes para compilar el kernel:
wget http://www.elinux.org/upload/b/b6/Buildroot-01082008.tar.gz
wget http://www.elinux.org/images/f/ff/Hammer-linux-2.6.22-09122007.diff.gz
wget http://www.elinux.org/images/e/ef/Hammer-kernel-config
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.gz
En el siguiente paso, comenzamos con la compilación de Buildroot:
tar xvzf Buildroot-01082008.tar.gz
cd buildroot
cp Hammer-config .config
make clean
make oldconfig
make
cd ..
Al hacer el make del paso anterior, se caía en un error en el archivo unifdef.c, en la cual la función getline ya está definida (conflicto de nombre con la función de stdio). Esto simplemente se soluciona renombrando la función a getline2.

Al hacer nuevamente un make, se caía en la parte donde trataba de bajar uClibc, esto se solucionó editando el valor de UCLIBC_SITE en ./toolchain/uClibc/uclibc.mk de http://www.uclibc.org/downloads a http://www.uclibc.org/downloads/old-releases

Otro make más, y ahora el sistema se caía al intentar bajar fakeroot, y de acuerdo a la instrucción del tutorial sólo bastaba con cambiar el número de la versión. Revisando en el FTP de debian me encontré que la última versión era la 1.14.4, pero viene empaquetada de una manera diferente del clásico tar.gz, por lo que decidí utilizar la 1.12.4 que viene empaquetada de esa manera y evitar mayores enredos con los scripts que lo procesan.

Al hacer nuevamente make, me arrojaba un error al parchar los archivos Makefile.in y Makefile.am, para salvar este obstáculo, reemplazamos el contenido de package/fakeroot/fakeroot-doc.patch con lo siguiente:
--- fakeroot/Makefile.am.orig 2006-04-19 11:50:35.000000000 -0600
+++ fakeroot/Makefile.am 2006-04-19 11:50:59.000000000 -0600
@@ -1,6 +1,6 @@
AUTOMAKE_OPTIONS=foreign
ACLOCAL_AMFLAGS = -I build-aux
-SUBDIRS=scripts doc test
+SUBDIRS=scripts test

noinst_LTLIBRARIES = libcommunicate.la
libcommunicate_la_SOURCES = communicate.c
--- fakeroot/Makefile.in.orig 2006-04-19 11:50:43.000000000 -0600
+++ fakeroot/Makefile.in 2006-04-19 11:51:21.000000000 -0600
@@ -244,4 +244,4 @@
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I build-aux
-SUBDIRS = scripts doc test
+SUBDIRS = scripts test
noinst_LTLIBRARIES = libcommunicate.la
Antes de realizar nuevamente el make, hay que borrar los archivos que *.rej que quedaron en build_arm/fakeroot-1.12.4

Luego, al hacer make, aparece un error en makedevs.c, el cual se soluciona reemplazando en la linea 531, el código
system("/bin/sync");
por
if(system("/bin/sync")) bb_error_msg("sync failed, continuing anyway");
con esto, finalmente, funcionó el make.

miércoles, julio 14

Más paletas de colores en NCView

Resolviendole el problema al Osvaldo, que no podía compilar el NCView, con un parche que incluye paletas de colores adicionales (como se describe aquí). El problema es que buscaba unas librerías de netcdf y con algunas llamadas a funciones de curl, pero la librería que había compilado a mano al parecer no las tenía.

Bueno, la cosa es que se me ocurrió hacerlo de la forma Ubuntu. ¿El resultado? Funcionó a la primera. Veamos el paso a paso.

Como nunca antes había compilado paquetes en esta máquina, tuve que instalar algunos paquetes para tal propósito:
sudo apt-get install dpkg-dev devscripts
Creamos una carpeta para trabajar y bajamos las fuentes (habiendo activado el repositorio, yo lo hice en synaptic)
mkdir ncview-deb
cd ncview-deb
apt-get source ncview
Sobreescribí los archivos fuente con los que estaban modificados para incluir los nuevos colormap
cp ../ncview_colormaps/* .
Descargamos las dependencias de compilación y recompilamos.
sudo apt-get build-dep ncview
debuild -us -uc
Y finalmente, instalamos el paquete ya parchado
sudo dpkg -i ../ncview_1.93g-1_amd64.deb
Voilà!! Fácil y bonito :D

martes, diciembre 22

Sistema nervioso terrestre

Me parece bastante ambicioso... pero genial!! Un pequeño sistema capaz de sentir una variedad de variables terrestres.

Para un poco más de detalles ver aqui

martes, septiembre 15

Soldar o pegar?

De pronto me asaltó el bichito de si habría alguna alternativa a soldar un circuito integrado. La respuesta fue positiva. ¿Las opciones? Polímeros conductivos y adhesivos conductivos.

Los primeros son polímeros que presentan conductividad, pero el problema que tienen es que generalmente son anisótropos (la conductividad no es la misma en todas las direcciones).

La segunda opción son los adhesivos conductivos, que son polímeros mezclados con partículas metálicas que forman los conductores, pero tienen las desventaja de que a medida que aumenta la cantidad de partículas metálicas y mejora la conductividad, la resistencia mecánica del polímero disminuye.

La gran ventaja es que el curado es a alrededor de 160 °C , bastante menos que las soldaduras de plomo-estaño 0 las soldaduras sin plomo (generalmente de AgCuSn).

Un análisis más detallado está en http://www.et-trends.com/files/SMTA-East_CondAdh.pdf

Interesante tema.

miércoles, agosto 5

Convertir de Pulgadas a milímetros

Aqui hay una hojita para convertir de pulgadas a milímetros. Muy útil!

GOOGLE DOCS

martes, julio 21

Digno el cordero

Puedo oír un gran llanto
que el pasado oyó
esa gente que tanto sufrió

Ver sus rostros llorando
clamando al Señor
ellos son los santos de Jesús

Mientras sufren dolor ellos pueden oír
un coro de ángeles ellos ven
y miles de voces cantando al Señor
digno el Cordero de Dios

Digno, digno, digno el Cordero de Dios
Digno, digno, digno el Cordero de Dios

Ahora estoy con los santos
de Cristo el Señor
dando la gloria al rey
postrados le adoran a Cristo el Señor
digno, digno es el rey.

Digno, digno, digno el Cordero de Dios
Digno, digno, digno el Cordero de Dios

Gloria, gloria, gloria al Rey y Señor
Gloria, gloria, gloria al Rey y Señor
Gloria al Rey y Señor.

sábado, julio 18

A precio de dolor

Letra de la canción interpretada por el Cuarteto Ixtus.

Por mi pecado el Salvador
vino a sufrir
insultos, odio, humillación
que no debió vivir.

Mas no alcanzo a comprender
lo inmenso de su amor
que sin mirar mi condición
me regaló el perdón
a precio de dolor.

Resucitado ascendió
para abogar por mi
intercediendo a mi favor
y asi poder vivir.

Aún no alcanzo a comprender
lo inmenso de su amor
que sin mirar mi condición
me regaló el perdón
a precio de dolor.

Si al cielo un día he de entrar
y veo al Salvador
mi corazón estallará
en gratitud y amor.

Quizás un día entenderé
lo inmenso de su amor
que sin mirar mi condición
me regaló el perdón
a precio de dolor.

martes, abril 21

Seguridad de archivos en NTFS

Esta vez me jugó una mala pasada la seguridad de archivos en NTFS.

Como le cambié el disco duro al notebook, el antiguo lo puse en un case externo para leerlo. Y comenzaron los problemas.

Primero la cosa fue que al conectarlo no aparecían las particiones, ni siquiera mostraba las particiones. La cosa es que finalmente era que cuando estaba instalado en el notebook le había puesto clave al disco duro, y al conectarlo vía usb, no había forma de darle la clave para acceder a los datos. Para solucionarlo tuve ponerlo nuevamente como un disco interno, y luego entrar a la BIOS para borrarle la clave (obviamente usando la clave original que tenía, no hackeandolo).

Luego, comenzó el problema que los permisos NTFS no me dejaban leer los archivos de mi carpeta personal, ni aún siendo el administrador del nuevo sistema. La cosa es que había que cambiar el dueño de los archivos, para eso no me sirvió el truco dado aqui para obtener la pestaña de permisos en windows xp home. Tuve que recurrir a la old-good línea de comandos (sí, incluso en windows xp). El comando mágico se llama subinacl, hay que bajar un instalador desde microsoft, y una vez instalado hacer:

C:\Program Files\Windows Resource Kits\Tools>subinacl.exe /subdirectories "g:\Documents and Settings\Wari\Datos de programa\*" /setowner=Lorenzo grant=Lorenzo=F
Con eso finalmente pude cambiar el dueño de los archivos y carpetas, y tener permisos completos para hacer lo que desee con ellos.

Espero que a alguien le sirva esto.

viernes, marzo 20

Frases notables #21

En el msn del Boris, apareció lo siguiente, muy interesante.
La verdadera medida de la grandeza de un hombre es cómo trata a quien no puede beneficiarlo en nada.
Nada más cierto...

martes, febrero 3

Facebook y F-Spot

Intentando subir fotos a facebook desde linux, me pregunté si picasa correría desde linux, para no tener que usar esa minúscula ventanita del applet de java.

La respuesta fué un SI, pero más falso que submarino de confort. Sucede que corre en linux pero usando una versión autocontenida de Wine. No quiero tener dos instalaciones de Wine en mi computador.

Después de haber subido las fotos a regañadientes con el applet, me encontré con la sorpresa de que F-Spot, el gestor de fotos de Gnome/Ubuntu, tiene un plugin para subir fotos a facebook. Genial.

La cosa era que yo también quería que no pidiera que yo validara las fotos que subiera, sino que pasaran directamente al álbum.

Para poder autorizar al plugin que suba fotos sin pasar por aprobación, hay que ir al siguiente link:
http://www.facebook.com/authorize.php?api_key=c23d1683e87313fa046954ea253a240e&v=1.0&ext_perm=photo_upload

No tiene nada de críptico el link, sólo el api_key del plugin de F-Spot (que aparece en la url cuando uno intenta agregar la aplicación a su perfil) y el permiso de photo_upload.

Para mayor información sobre los permisos y aplicaciones de facebook, ver aqui.

Espero le sirva a alguien.

domingo, enero 18

FreeCAD

Un día de estos se me ocurrió hacer un plano y/o un modelo 3D de un pequeño mueble que estoy construyendo.

Intentando volver a mi centro linuxero, busqué un programa para linux que me permitiera hacerlo, al más puro estilo AutoCAD en windows.

Buscando vía google, finalmente llegué a dos alternativas que me parecieron bastante razonables: BRLCAD y FreeCAD.

Me decidí por instalar FreeCAD primero. No estaba en los repositorios de ubuntu, así que a compilar se ha dicho.

Tuve que instalar algunas dependencias, entre las que se cuentan
python-dev
libxerces28 libxerces28-dev
libboost-*
qt4-dev-tools libqt4-dev
libcoin40-dev
libsoqt-dev

Para instalarlo con todos los bells and whistles, tuve que instalar otros paquetes.

El primero fue GTS
apt-get install libgts-dev

Luego fue OpenCASCADE, el cual también había que compilar, y resolver sus dependencias, entre las cuales se cuentan
sun-java6-jdk
tcl8.4 tcl8.4-dev
tk8.4 tk8.4-dev
automake1.7

Luego de instalar estos paquetes, volvemos al directorio OpenCASCADE6.3.0/ros para comenzar con la compilación y hacemos
./configure --with-java-include=/usr/lib/jvm/java-6-sun-1.6.0.07/include --with-tcl=/usr/share/tcltk/tcl8.4 --with-tk=/usr/share/tcltk/tk8.4
make
make install

Luego, volvemos a la instalación de FreeCAD, y al hacer
./configure
nos damos cuenta de que aún tenemos problemas con las librerías de OpenCASCADE...

Finalmente, para poder resolver las dependencias de OpenCASCADE tuve que agregar unos repositorios de Opennovation.org (ver), voilá! se podía instalar el paquete usando synaptic. Olviden todo lo de la compilación de OpenCASCADE.

Continuando con la compilación de FreeCAD, nuevamente al hacer ./configure, pasó todo sin problemas ni warnings, pero al hacer make, tiró unos errores que faltaban unos headers highgui.h y cv.h y muchos warnings de cosas no definidas... asi que synaptic al rescate!... había que instalar libhighgui1-dev y libcv1-dev y listo. Compilación exitosa.

Luego de varios intentos... y bastantes decepciones. Instalé el qcad community edition desde el repositorio, pero con tan mala suerte que esta cosa al hacer el plano pone el texto de las cotas en unidades de plano, o sea si tengo un texto de cota de 2.5 mm en un plano de 1m, el texto aparece minúsculo!! ilegible!!

Creo que probaré la alternativa AutoCAD Inventor sobre Wine. Ojalá resulte.

Espero que algún día hagan un programa CAD decente para Linux.

jueves, diciembre 25

Un amigo como tú

Hace un par de días recibí este mensaje en un correo:
Si un hombre gordo entra a tu pieza en medio de la noche, te agarra y te mete en un saco, no te asustes... es que yo le dije al viejito pascuero que quería un amigo como tú en esta navidad...
Feliz navidad a todos!

Frases notables #20

Dentro de mi suscripción a la lista de correo ubuntu-users, llegó un mail con una frase que me pareció bastante interesante para compartirla.
"Fear of the devil is one way of doubting God."
Kahlil Gibran
"El temor del diablo es una forma de dudar de Dios."
Simplemente... genial.

Algo simplecito como post número 200.

martes, octubre 14

Problemas con tarjeta de red

Ayer me topé con un problema bastante extraño.

El dmesg me tiraba algo así:
unregister_netdevice: waiting for eth1 to become free. Usage count = 1.
Y lo más raro de todo es que no me dejaba apagar el computador (el notebook de elías).
Después de burrear mucho rato se solucionó, al parecer el sistema había instalado dos controladores para la misma tarjeta de red. Uno era el módulo directo del kernel sis900 y el otro era el controlador de windows xp vía ndiswrapper.

Lo extraño era que la tarjeta de red cableada aparecía como wlan1 :S

No tengo bien claro como lo solucioné pero creo que fue algo asi
ndiswrapper -e netgen
modprobe -r sis900
modprobe sis900
Luego vino la parte de configurar la red clásica
dhclient eth0 (la del flojo!)
Y se resolvió

miércoles, septiembre 24

Buenos momentos @ Villarrica

Este 18 de septiembre lo pasé en Villarrica, con ocasión del Congreso de Jóvenes Adventistas.

Creo que fue una gran idea el haber ido, o si no me habría aburrido como ostra acá en Conce! Mis mejores amigos andaban allá, así que había que puro ir.

Antes de ir, no dejé pasar la oportunidad de comprarme una cámara fotográfica, lo cual también fue un acierto, ya que me sirvió para entrenerme cuando las actividades no me apetecían tanto, y para sacarles fotos y grabar a los chiquillos de los cuartetos, y otros eventos musicales que hubieron. Realmente fue conce el que se puso con la música en el congreso. Estuvieron los cuartetos Alabanza, Heaven, NN, y también un dúo del Luchox con la Javi. También estuvieron Bethel con Sergio Leiva, Carolina Barra, otro cuarteto de temuco, y el Cuarteto Canto Nuevo.

No sé que habría sido de mi sin las chiquillas mañosas que no querían comerse la comida o las manzanas xD, hubo un almuerzo en que llegué a comerme 5 manzanas! jajaj. Otra cosa que no me gustó fue que entregaran la comida en envases desechables, lo que hizo que en el congreso se generara una montaña de basura realmente impresionante, completamente contrario al cuidado de la naturaleza promovido por la iglesia.

También encontré que le faltó competencias deportivas, los días debieran haber terminado con competencias deportivas entre, por ejemplo, distritos. Bueno... ya habrá oportunidad de hacer deporte ;)

El sábado en la noche salimos con Negro y Checho Leiva a comer un sandwich y sus papas fritas. Estuvieron notables. Y cuando nos disponíamos a comer... justo llegaron las chicas de Los Ángeles a comer al mismo restorán donde estabamos nosotros xD. Lamentablemente había quedado de espalda a ellas asi que no aproveché mucho el panorama... no así mis compañeros de tertulia

Pero filo... igual lo pasamos bien, a pesar de tener que quedarnos un día más en Villarrica porque no encontramos pasajes de regreso para el domingo, así que obligaos a quedarnos en el colegio adventista y levantarnos temprano (antes de que llegaran los alumnos xD). "Lamentablemente" tuvimos que encerrarnos en el colegio como a las 8 pm y jugar su CTF entre hombres y mujeres jajajaj. Esa noche dormimos como angelitos.

A pesar de que no conocí mucha gente nueva, sí me encontré con gente que hace muchos años que no veía, como el Eliel por ejemplo (no lo veía desde que estabamos en la básica!), o la Chufli, con la que conversé abundantemente el sábado en la tarde.

Bueno... creo que fue una experiencia memorable... eso sería por ahora...

PD: Lección para el próximo congreso: Ir en auto o en bus particular...

martes, septiembre 23

Samba... pero sin bailar ^^

Hoy, he burreado mas que la mi... tratando de hacer funcionar unas particiones montadas vía samba.

Antes de lograr de que funcionaran las cosas, si en el servidor había un symlink, el sistema local lo veía como un symlink a su propio sistema de archivos, de modo que no lo seguía en el servidor, sino que alegaba que no existía tal o cual archivo.

Bueno, la cosa era que para poder hacer que funcionaran los symlinks, había que agregar en el smb.conf (/etc/samba/smb.conf) unas palabras mágicas en la sección [global]
[global]
... otras configuraciones...
follow symlinks = yes
wide symlinks = yes
unix extensions = no
Con eso se logró que al hacer
mount -t smbfs -oguest,ro //servidor/compartida /puntodemontaje
ls /puntodemontaje
aparecieran los archivos correctamente (siguendo el symlink en el servidor), no los symlinks rotos al sistema de archivos local.

PD: obviamente antes de intentar montar la partición como smbfs hay que tener instalado el paquete smbfs (apt-get install smbfs)

viernes, junio 20

Ojalá todo estuviera tan barato!

Ayer, después del trabajo, me fui al Mall Plaza Alameda, el nuevo (de hecho hay muchas tiendas que aún no abren), con una doble intención: comer y comprarme unas zapatillas. Con la comida... me fue espectacular! No hay caso... los chacareros del Dominó's son geniales... aunque me pareció más chico el pan que los de conce, taba regordo así que compenzó la cosa jajajaj

Pero la sorpresa vino cuando me fui a comprar las zapatillas. La cosa es que me di unas vueltas por el mall buscando algo que satisfaciera mis deseos de calzado, y la cosa es que al final quedé entre dos modelos. Uno era un adidas (en la tiendita de adidas) y el otro un coleman (en ripley). Finalmente después de mucha indecisión, me quedé con las coleman. Estaban marcadas en 24.990, versus los 22990 de las adidas. Pensé... no es tanta la diferencia... si total igual no están tan caras! Cuando le dije a la vendedora que me las llevaba, fuimos a la caja y de pronto me dice... "son 9.990"... "Perdón?? Cuánto es?" "son 9.990". Sin querer, me ahorré 15 lucas... Por qué no bajarán todas las cosas de precio así?. Con ese descuento ni sentí la lluvia que me mojaba mientras caminaba hacia la estación del metro.

Otras de las cosas agradables del Mall nuevo es que como aún no abren todas las tiendas, anda poca gente, se puede caminar sin chocar ni nada por el estilo, tranquilamente. Tanto así que el martes, cuando fuí a echar una mirada a las zapatillas intenté ir al patio de comidas, pero como no andaba casi nadie (ni parecido al de conce!) gran parte de los locales de comida estaba como cerrando, o limpiando para cerrar, o los que atendían así como en actitud de reposo... como que daba lata molestarlos por una miserable venta! xD

Pasando a otro tema hoy en el DGF estuve casi todo el día cabeceándome contra el compilador. La cosa es que tenía que compilar la librería NetCDF con el compilador Fortran de Intel. La cosa es que no quería por nada del mundo ser compilada la bendita librería. De primera, no se configuraba correctamente. Lo cual se arregló al setear correctamente las variables de entorno para que el script encontrara las librerías y el compilador. Una vez arreglado eso, aparentemente el ./configure hacía todo correctamente, pero no compilaba. Al revisar el config.log aparecía una cosa rara, era que no encotraba una equivalencia de los tipos de datos entre c y fortran. Después de mucho, pero mucho lesear, me di cuenta que eran los flags del compilador. El que estaba lesiando el el flag -xT. Inicialmente me había dado cuenta de que el -xT no era adecuado para mi procesador, sino para los Intel Core 2. Cambíe los CFLAGS por una versión equivalente pero con -xW, apropiado para la arquitectura pentium4. Con eso el ./configure corría correctamente, pero aún no compilaba. El make check se caía... :@, la cosa es que al muy burro se le había olvidado activar el mismo flag (-xW) en los FFLAGS... obviamente no me iba a ejecutar los archivos que realizaban las pruebas de equivalencia de tipos (que se compilan silenciosamente durante el make check), en otras palabras estaba compilando los archivos de fortran para un core2 y trataba de ejecutarlos en mi procesador... lo cual claramente no iba a andar, trataba de comparar los resultados, de los cuales uno no se generaba... xD es como comparar peras con ... nada! ajjajajaaja

Ya pues... sería todo por hoy...

Hasta la próxima!

lunes, junio 16

Las grandes vueltas de la vida

Hace mucho tiempo que tenía ganas de escribir aquí sobre todas las cosas que he hecho en este largo tiempo sin dedicarme al bloguerismo.

He de contarles de que mi vida se ha vuelto lucrativa xD Muy bien... estoy con pega. Trabajando en el departamento de geofísica de la UdeC, ya he hecho un par de cosas interesantes ahi. Bueno, interesantes, sin contar las cosas de computadores que me ha tocado cotizar. He configurado un servidor web y de correo desde casi cero... gracias Ubuntu server que traía casi todo listo!

Lo que más dolores de cabeza me dió fue el servidor de correo. De partida cambié de servidor imap, de courier a dovecot, entonces había que hacer uno que otro ajustecillo para que no se perdieran las carpetas.

Otro problema que surgió fue que squirrelmail (el webmail) no dejaba abrir los mensajes en las casillas con más de 1000 mensajes. Nunca supe que era el problema en si, pero cambié el webmail, ahora usamos roundcube.

Lo único malo de haber entrado a trabajar es que mi memoria de título va más lento que tren a pedales, pero ya habrá alguna instancia de atracarle firme para terminarla pronto.

Una de las cosas entretenidas es este viajecito que me salió a aprender cosas de computación relacionadas con la geofísica. Me ha tocado viajar en transantiago xD, y no sé si será que me ha tocado la suerte de una línea con poca gente o en realidad la cosa anda holgada.

Bueno, espero volver a escribir un poco más seguido.