miércoles, 18 de julio de 2007

Avahi ... un misterio menos


Para aquellos que sepan qué es avahi, que no sigan leyendo... a no ser que quieran reirse de mi ignorancia ¬_¬

Hay una cosa de la que siempre que he podido me he quejado de Ubuntu:
A la hora de configurar la red, como siempre pasa en estos mundos del software libre, tienes un millón de formas de hacerlo; pero en Ubuntu es donde
me he encontrado por primera vez que cuando configuras la red a través del herramienta gráfica, luego mirabas en el archivo /etc/network/interfaces ...
¡Y ahí no había nada de lo que habías estado poniendo!

Por otro lado, cuando realizas los cambios en el /etc/network/interfaces alguna vez me he vuelto medio loco porque no conseguía que el servicio se
comportase como se le supone...
En fin, un montón de cosas raras más propias de otros sistemas que basan su configuración en un oscuro registro y de lo que yo pensaba que estaba a
salvo en el sistema del pingüino...

Pues bien, hoy estaba jugando con el lsof y aprendiendo algunas opciones interesantes (eso para otro día en el que me ponga a escribir un artículo
de verdad ~_^) y he visto el proceso ese raro:


root@acer-laptop:/home/bpk# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
avahi-dae 4666 avahi 13u IPv4 15856 UDP *:mdns
avahi-dae 4666 avahi 14u IPv4 15857 UDP *:32769

Y yo pensado, ¡coño, qué es esto!


root@acer-laptop:/home/bpk# dpkg -l "avahi*"
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=================================-=================================
ii avahi-autoipd 0.6.17-0ubuntu3 Avahi IPv4LL network address configuration daemon
ii avahi-daemon 0.6.17-0ubuntu3 Avahi mDNS/DNS-SD daemon



Interesante...


root@acer-laptop:/home/bpk# apt-cache show avahi-autoipd
Package: avahi-autoipd
Priority: optional
Section: net
Installed-Size: 176
Maintainer: Ubuntu Core Developers
Original-Maintainer: Utopia Maintenance Team
Architecture: i386
Source: avahi
Version: 0.6.17-0ubuntu3
Depends: libc6 (>= 2.5-0ubuntu1), libdaemon0, adduser
Recommends: dhcp3-client, iproute
Conflicts: zeroconf
Filename: pool/main/a/avahi/avahi-autoipd_0.6.17-0ubuntu3_i386.deb
Size: 42356
MD5sum: 6bf4b572186ebae0f77ef22ac721cf3b
SHA1: 7a6ae3c80a7ca5b8d72117b56a93cbae9b67a981
SHA256: b43a7725850cbcdfa339be0c0cdea26ad4de402e80ee9aded41a0a4ad5a650d5
Description: Avahi IPv4LL network address configuration daemon
Avahi is a fully LGPL framework for Multicast DNS Service Discovery.
It allows programs to publish and discover services and hosts
running on a local network with no specific configuration. For
example you can plug into a network and instantly find printers to
print to, files to look at and people to talk to.
.
This tool implements IPv4LL, "Dynamic Configuration of IPv4 Link-Local
Addresses" (IETF RFC3927), a protocol for automatic IP address
configuration from the link-local 169.254.0.0/16 range without the
need for a central server. It is primarily intended to be used in
ad-hoc networks which lack a DHCP server.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: ubuntu-desktop, kubuntu-desktop, xubuntu-desktop


y


root@acer-laptop:/home/bpk# apt-cache show avahi-daemon
Package: avahi-daemon
Priority: optional
Section: net
Installed-Size: 364
Maintainer: Ubuntu Core Developers
Original-Maintainer: Utopia Maintenance Team
Architecture: i386
Source: avahi
Version: 0.6.17-0ubuntu3
Depends: libavahi-common3, libavahi-core5, libc6 (>= 2.5-0ubuntu1), libcap1, libdaemon0, libdbus-1-3 (>= 0.94), libexpat1 (>= 1.95.8), adduser, dbus
(>= 0.60)
Recommends: libnss-mdns
Suggests: avahi-autoipd
Conflicts: mdnsresponder
Filename: pool/main/a/avahi/avahi-daemon_0.6.17-0ubuntu3_i386.deb
Size: 78398
MD5sum: 09ad1ba9c1979c05dc03e1c83935a3c7
SHA1: 42e8310fc438fd67ce39274031d2d72f0748ed8c
SHA256: 9d96182dc6c3e02f29593be65d8b0fc4b099ddf19e2244d7b0c927ff21b7853a
Description: Avahi mDNS/DNS-SD daemon
Avahi is a fully LGPL framework for Multicast DNS Service Discovery.
It allows programs to publish and discover services and hosts
running on a local network with no specific configuration. For
example you can plug into a network and instantly find printers to
print to, files to look at and people to talk to.
.
This package contains the Avahi Daemon which represents your machine
on the network and allows other applications to publish and resolve
mDNS/DNS-SD records.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: ubuntu-desktop, kubuntu-desktop, edubuntu-desktop, xubuntu-desktop



Y por último, echando una visual en el predecible directorio /etc/avihi/ se ve claramente como funciona el programa de marras y qué cositas hace.

Los links de rigor, por si alguien quiere ver lo que se puede hacer con el programa de marras:

La peich de la wikipedia
La página oficial

Especialmente interesante el man del archivo de configuración


That´s all folks!

jueves, 5 de julio de 2007

Un problema de esecueles

Un dia en gtalk...

Jaime:
cambiando de tema. te propongo un problema de Ordenacion con sql a ver si lo sacas?
yo lo estoy meditando
creo que lo tengo

Pedro:
okis
pero yo estoy muy verde

Jaime:
SELECT id FROM tabla
1, 2, 3 ,4
SELECT id FROM tabla ORDER By Id
1, 2, 3, 4
Hadme una SQL para que de
2, 1, 3, 4

Pedro:
y supongo que no hay otro campo que nos permita ordenarlo con lógica, ¿no?

Jaime:
la logica es que van ordenados pero primero tiene que salir el registro 2
ordenados por id
solo tiene el campo id la tabla

Pedro:

¿¿??
te interesa el 2 y despues el resto?

Jaime:
sip
mis motivos tengo

Pedro:
okis, y porqué no sacas el 2 y despues el resto?
en plan subselect y punto?

Jaime:
con una select please :D
no
caca

Pedro:
lo sé

Jaime:
subselect ya sabes que caca

Pedro:
sipe
¿union?
lo sé kk

Minutos mas tarde...

Jaime:
te rindes?
la verda es que no se si sera mas obtimo :P
optimo

Pedro:
estoy pensando en group by y having
pero creo que necesitas de todas formas una subselect...

Jaime:
abs te suena ?

Pedro:
nope

Jaime:
valor absoluto de un numero

Pedro:
okis

Jaime:
SELECT *, ABS((id - 2)) AS CampoOrden FROM tabla ORDER BY CampoOrden
En mi caso ademas tengo que ordenar por id tambien
por motivos que no vienen al caso
como me mola SQL ;D

Pedro:
sipe, a mi me mola mucho
pero no termino de ver el ABS

Jaime:
id es unico
vale?

Pedro:
sipe
por cierto, eso es solo de transact estoy viendo
por eso no me sonaba con lo buueno que soy yo
;;-)
y oracle

Jaime:
1 - 2 = -1; Abs(-1) = 1
2 - 2 = 0; Abs(0) = 0
3 - 2 = 1; Abs(1) = 1

etc
lo ves?
el sql server se lo zampa

Pedro:
que guay, si señor

Jaime:
y el oracle seguro que tambien
ten en cuenta que las operaciones matematicas son demasiado indispensables para hacerlas solo con transact
sobre todo el abs

Minutos despues...

Pedro:
falsa alarma, el abs parece sql de pura cepa

Jaime:
ya te dije

Minutos despues...

Jaime:
y complicandolo un poco
si quires que salga primero el 2 luego el 3 y luego el 4 y despues los que quedan?
:D
2, 3, 4, ....
como me gusta bombardearte el cerebro
XD

Minutos despues...

Pedro:
¿no valdría unos cuantos "FIRST"?

Jaime:
?
no se
olvida 2, 3, 4
imagina 4, 2, 5
y despues el resto
tendrias que hacer 3 orders
con abs cada uno...
creo... XD
tampoco lo he pensao mucho

Pedro:
yo no creo que interesase ABS para eso

Jaime:
no?
como lo harias
lo de los 3 orders olvidalo
que no rularia....

Pedro:
SELECT FIRST(id+3), FIRST(id+1),FIRST(id+4) FROM ...

Jaime:
y te daria :
Servidor: mensaje 195, nivel 15, estado 10, línea 1
'FIRST' no es un nombre de función reconocido.
XD

Pedro:
¿¿??
http://www.w3schools.com/sql/func_first.asp

Jaime:
XD
mamon

Pedro:
¿por?
a ver si quieres que tenga todas las funciones en la cabeza
xDD

Jaime:
no rula en sql server

Pedro:
¿y el case?
creo que valdria
http://technet.microsoft.com/es-es/library/ms181765.aspx
de hecho creo que sería la mejor solución

Jaime:
?
estas fumao
XD
hadlo con case

Pedro:
siempre

Jaime:
a ver como lo haces
FIRST = TOP 1

Pedro:
sipe
es el mismo principio que con ABS pero no ordena el resto

Jaime:
pero tienes que hacer union
ein?
XD

Pedro:
no si lo haces con un group by...
... no westoy muuy seguro de eso

Jaime:

Si haces SELECT TOP 1 id FROM tabla
te da 1
no 2
estas mu oxidao

Pedro:
hay que ponerlo en el where

Jaime:
que jodio
XD
y union
XD

Pedro:
no deberías

Jaime:
????

Pedro:
por un lado lo del CASE:
en el linkl que te he mandado

Jaime:
pedro

Pedro:
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;

Jaime:
dices barbaridades

Pedro:
¿eso no valdría?

Jaime:
como?
had la select para el ejemplo que te he puesto
piensalo
por dios

Pedro:
utilizas lo de ese ejemplo como alias para luego ordenarlo
si pienso no escribo
xDD

Jaime:
se nota
XD

Minutos despues...

Pedro:
SELECT id, ordenacion =
CASE id
WHEN 4 THEN 1
WHEN 2 THEN 2
WHEN 5 THEN 3
THEN 'Other sale items'
ELSE ABS(id+4)
FROM tabla
ORDER BY ordenacion;
habría que pdrobarlo y pulislo pero cfreo que valdría
de todas formas yo no sé transact
xD

Minutos despues...

Jaime:
claro
XD

Pedro:
no vale lo del case o qué?
mira que yo lo veo viable
xD

Jaime:
voy a probar
a ver
que me parece que hasta tienes razon

Pedro:
no te veo convencido
xD

Jaime:
no puedes hacerlo
o lo he hecho yo mal

Pedro:
yo diría que si que tiene que valer auqneu a lo mejor no exáctamente tal como lo he escrito
por cietrto otra forma de acerlo:
¿conoces el WITH de transact
y el ROWLOCK?

Jaime:
nop

Pedro:
promete, tu mientras ves mirando mi CASE
xD

Minutos despues...

Jaime:
mu guay el case
rula
te faltaba poner el end

Pedro:
soy el puto amo ^_^
xD
eso es porque mis comandos nunca terminan, se van a salvar a gatitos en los arboles cuando ya no se les necesita
xD

Jaime:
SELECT id, ordenacion =
CASE id
WHEN 4 THEN 1
WHEN 2 THEN 2
WHEN 5 THEN 3
ELSE ABS(id+4)
END
FROM tabla
ORDER BY ordenacion;
XD
esto es para poner un post :P

Pedro:
sipe, haz un copypaste ¿capado? del chat en finkalinux

Jaime:
pero creo sera mas rapido el abs para un solo resultado

Pedro:
^_^
seguro

Jaime:
me refiero para ordenar primero un registro

Pedro:
pero tu habías pedi 3 cabrón!!!

Jaime:
XD
pa 3 lo solucionaste tu
aunque te falto algo de sintaxis
XD

Pedro:
cerda!

Seguidores