lunes, 31 de diciembre de 2007

Netbackup awaiting resource hostname. Will retry physical later

La falta de efectivos en épocas de vacaciones acostumbra a desembocar en que además de solventar los marrones que conoces debes pelearte con los que no conoces. Pues bién, esta semana he tenido que darme de tortas (seámos finos) con Veritas Netbackup y una librería de copia que lo hacía todo menos la copia (literalmente así).

Eludiendo cualquier responsabilidad de quien intente hacer lo mismo que explico aquí:

Consultando el "detailed status" en el master media al lanzar un trabajo decía lo siguiente...

...awaiting resource nblibrary3. Will retry physical later.

La nota más parecida a este caso en la web de Symantec es ésta:

Lo que proponen no aplicaba a mi caso (Nota para Windows, mi instancia central corre sobre AIX) pero me dió una idea de cómo "jugármela" con comandos: Paré los servicios de Netbackup, y lancé un...

# nbrb -resetAll

Decía lo de jugármela porque mi documentación no acaba de dejar claro lo que hace éste comando. Tras los sudores iniciales derivados de no tener muy claro lo que podía haber pasado, parece que el comando sólo resetea la BD del resource broker que utiliza Netbackup para controlar los estados de los dispositivos que maneja.

Hay que esperar a que acabe el proceso. En mi caso tuve que asegurarme con un ps ya que me devolvía el prompt pero seguía trabajando por detrás. Tras esto volví a arrancar servicios y al lanzar una nueva prueba me dió otro error distinto:

STATUS CODE: 800, NetBackup 6.0 jobs are failing with Status 800 (resource request failed).

Esta otra nota propone asegurar que el estado del drive es UP. Esto hay que mirarlo en el media server correspondiente (Este sí que es un Windows):


C:\Documents and Settings\ADMINISTRADOR>tpconfig -d
Id DriveName Type Residence
SCSI coordinates/Path Status
****************************************************************************
0 HP.ULTRIUM3-SCSI.000 hcart3 TLD(2) DRIVE=1
{1,0,1,0} DOWN

Currently defined robotics are:
TLD(2) SCSI coordinates = {1,0,0,0},

EMM Server = nbcontroller.dominio.com


Para cambiar el estado a UP:

C:\Documents and Settings\ADMINISTRADOR>tpconfig -update -drive 0 -drstatus UP
Updated drive <> of type hcart3 in configuration

C:\Documents and Settings\ADMINISTRADOR>tpconfig -d
Id DriveName Type Residence
SCSI coordinates/Path Status
****************************************************************************
0 HP.ULTRIUM3-SCSI.000 hcart3 TLD(2) DRIVE=1
{1,0,1,0} UP

Currently defined robotics are:
TLD(2) SCSI coordinates = {1,0,0,0},

EMM Server = nbcontroller.dominio.com


Y tras esto volvió a funcionar la copia en esa unidad.

Por cierto, olvidé mencionar que ninguno de los reinicios de máquina (media server, master media y librería de copia) arreglaron nada...

martes, 25 de diciembre de 2007

Pan blandete y vino fuerte, mi muerte.

Ultimamente la cosa va de refranes (o sucedáneos).

Hoy era día de comida familiar y he recordado éste que a veces mencionan Juan, Urbana, María José, Santos, Menti, Daniel ...

Muy villorero.

ACTUALIZACION (añadido) (2007-12-29)

Me explica María José la historia del refrán:

Cuenta la leyenda que habitaba en el pueblo un matrimonio que compartía la vivienda junto al padre del marido.

La mujer, harta de su suegro, no veía el momento de que aquel hombre abandonara este mundo, y empezó a prepararle almuerzos a base de pan y vino.

El suegro dándose cuenta de la situación exclamaba alegre "Pan blandete y vino fuerte, mi muerte". Y la nuera, que malinterpretaba el significado del dicho, insistía en los almuerzos a base de pan blando y vino peleón... Hasta que murió la mujer.


lunes, 24 de diciembre de 2007

Integración Unix AIX, Samba, Winbind, SSH y dominio Windows

Recientemente he completado una serie de ejercicios de integración entre Samba, Winbind, SSH y Active Directory.

Mientras que con Linux han salido casi todo a la primera, la implantación en un AIX ha sido más traumática de lo que me esperaba.

La parte buena es la de siempre: De ésta también he aprendido. Y aunque la documentación oficial de Samba me parece bastante buena, la parte que se refiere a AIX creo que no cubre el caso de una forma demasiado exhaustiva. Así que he decidido torturar a la "audiencia" con mis vivencias en este sentido.

El ejercicio está dividido en ocho partes (además de la introducción que constituye esta entrada):

  1. Instalación.
  2. Agregar host al dominio de Windows.
  3. Debugado de problemas.
  4. Otros problemas encontrados en AIX en este punto.
  5. Winbind y SSH, compilación código fuente de Samba.
  6. Winbind y SSH, puesta en marcha y debugado.
  7. Winbind y SSH, PAM y compilación del openssh.
  8. Winbind y SSH, últimos detalles.

Antes de empezar, diré que mi experiencia con AIX es moderada a día de hoy, así que de entrada pido disculpas si el contenido de los artículos se puede desarrollar mejor (seguro que sí). Como en el resto de entradas, es bienvenido cualquier comentario que contribuya a mejorar lo que se explica.

sábado, 22 de diciembre de 2007

Patada en los cojones.

De entrada decir que otros bloggers ya han tratado este tema, pero necesitaba darle mi enfoque:

Algunas veces me he preguntado qué es lo que hace que algo o alguien resulte gracioso.

Creo que la respuesta no es nada fácil. Si algún día llego a tener una idea, seguramente ni siquiera sabré explicarlo. Además lo que a mí me hace gracia puede que a ti te deje igual y viceversa. Partiendo de esta subjetividad...

Pero donde quería centrarme es en el punto en el que una frase (o fragmento de ella) tan desubicada como "patada en los cojones", que sin ningún otro adorno puede parecer (además de ruda) poco o nada graciosa, se convierte en "algo" cuando lo acoplas a la segunda parte de cualquier refrán. Incluso en Gran Angular defienden que tras el cambio el refrán magnifica su significado:

  • Más sabe el diablo por viejo que por patada en los cojones.
  • Es mejor dar que recibir patada en los cojones. (Obvio)
  • Dios aprieta pero no patea los cojones.
  • Más vale estar solo que patada en los cojones.
  • Nunca es tarde si la patada es en los cojones.
  • El que no llora, patada en los cojones. (Corrige su significado)
  • De tal palo tal patada en los cojones.
  • Tiran mas dos tetas que patada en los cojones.
  • A caballo regalado, patada en los cojones.
  • Mea a gusto, mea contento, pero patada en los cojones.
  • Aquí el que no corre, patada en los cojones.
  • Mal de muchos, patada en los cojones. (Obvio también)
  • Aquí el más tonto patea los cojones.
  • Marzo ventoso, abril lluvioso, sacan a mayo patada en los cojones.
  • Hasta el cuarenta de mayo, patada en los cojones.
  • Cada oveja con su patada en los cojones.
  • Ojo por ojo y patada en los cojones.
  • Quien tiene un amigo tiene una patada en los cojones.
  • ¿No querías sopa? Patada en los cojones.
  • Afortunado en el juego, patada en los cojones.
  • Cuando el río suena, patada en los cojones.
  • La patada en los cojones mató al gato.
  • Quien mal anda, patada en los cojones.
  • Al que a buen árbol se arrima, patada en los cojones.
  • Más vale pájaro en mano que patada en los cojones.
  • Cree el ladrón que todos son de patada en los cojones.
  • Dime con quien andas y patada en los cojones.
  • Si dos no quieren, patada en los cojones. (O tambien: Dos no discuten si patada en los cojones)
  • El que a hierro mata, patada en los cojones.
  • A quien madruga, patada en los cojones.
  • En casa del herrero, patada en los cojones.
  • Dime de que presumes y patada en los cojones.
  • Aunque la mona se vista de seda, patada en los cojones.
  • A mal tiempo, patada en los cojones.
  • Cuando hay hambre, patada en los cojones.
  • Unos nacen con estrella y otros con patada en los cojones.
  • A palabras necias, patada en los cojones.
  • No hacer leña de la patada en los cojones.
  • Ojos que no ven, patada en los cojones.
  • Perro ladrador, patada en los cojones.
  • Matar dos pájaros de una patada en los cojones.
  • Mucho ruido y pocas patadas en los cojones.
  • Más vale maña que patada en los cojones.
  • A lo hecho, patada en los cojones.
  • Se ve antes la paja en el ojo ajeno que la patada en los cojones propios.
  • En boca cerrada, patada en los cojones.
  • Aquí, o follamos todos o patada en los cojones.
  • Más vale malo conocido que patada en los cojones.
  • Como fuenteovejuna, todos patada en los cojones.
  • Por la patada en los cojones muere el pez.
  • En abril, patada en los cojones mil.
  • Quien roba a un ladrón, patada en los cojones.
  • Gallo que no canta, patada en los cojones. (Y canta fijo)
  • Eramos pocos y patada en los cojones.
  • Cuando las barbas del vecino veas quemar, patada en los cojones. (Eficaz método antiincendios donde los haya)
  • Vísteme despacio, patada en los cojones.
  • A falta de pan, buenas son patadas en los cojones. (La verdad es que uno de los posibles significados del refran original ya iba por aquí)
  • Mano que te da de comer, patada en los cojones.
  • Manos calientes y corazón frío, patada en los cojones.
  • El que ríe el último, patada en los cojones. (Ya sabéis lo que le toca al mas lento de pillar los chistes)
  • El que parte y reparte, patada en los cojones. (A los bancos, lo mismo que a los lentos de reflejos)
  • Sarna con gusto, patada en los cojones.
  • El que quiera peces, patada en los cojones.
  • Pan con pan, patada en los cojones.
  • Agua que no has de beber, patada en los cojones.
  • Pescado que te fríes, patada en los cojones.
  • Para muestra un botón y una patada en los cojones.
  • A buena y sin engaño, (para mi quiero el provecho y para ti la) patada en los cojones.
  • Abril alabo, si no vuelve el rabo (el final es genial, en todo caso concatenamos) patada en los cojones.
  • A cada cajón, patada en los cojones.
  • A burro desconocido, patada en los cojones.
  • A todo cerdo le llega su patada en los cojones.
  • El que busca, siempre encuentra patada en los cojones.
  • Entre cavando patacas, patada en los cojones.
  • No por mucho madrugar, patada en los cojones.
  • Cuando el grajo vuela bajo, patada en los cojones.

Parece que semejante meme (reconozco que a mi me hace reír bastante), se le ocurrió a un tal Azyr hace ya algunos años en Foros Canalgame. La lista que presento aquí está obtenida de Kung-Foo y Wiki de revistes del Campus Nord, aunque he incorporado algunos refranes que no estaban y que no podían faltar. Llegué tirando del hilo desde WTF? Microsiervos.

Como con los chistes: Si arrancas con uno, te ríes con el resto.

jueves, 20 de diciembre de 2007

HTML y símbolos matemáticos (entre otros)

Hace unos días publiqué un artículo en el que tuve la necesidad de mostrar el símbolo matemático "infinito" (∞).

En la primera versión, me limité a especificar el literal "infinito", tal cual. Vi que en Wikipedia lo mostraban mediante una imagen y no le dí más vueltas.

Pero esta semana he visto que en Microsiervos hablaban del símbolo "al cuadrado" (²) y me ha picado la curiosidad. Después de buscar en w3c.org he comprobado que hay una buena colección de caracteres que se pueden mostrar mediante HTML (si el navegador sabe obtener la fuente apropiada). El link concreto con la información en cuestión (Character entity references for symbols, mathematical symbols, and Greek letters) es éste pero lo que me ha decepcionado un poco es que en w3c.org no acompañan la información de cada símbolo con el símbolo en sí (?!). Estaremos de acuerdo en que cuesta menos entender a qué nos referimos si vemos el carácter en lugar de su descripción. Es aquello de que vale más una imagen...

En la tabla de abajo he incorporado la misma información del link de antes, añadiendo los correspondiente símbolos. Sobre Mozilla y Firefox los muestra todos correctamente en todas las pruebas que hago. Según leo aquí, de Opera y Safari también nos podemos fiar. En cambio en determinadas versiones de otros navegadores de peor reputación, puede que sea necesario instalar la fuente Unicode Symbols para poder ver correctamente algunos caracteres. Esta fuente se puede descargar, por ejemplo, aquí.

Y ésta es la tabla:


<!-- Mathematical, Greek and Symbolic characters for HTML -->
<!-- Character entity set. Typical invocation: <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML"> %HTMLsymbol; -->
<!-- Portions © International Organization for Standardization 1986: Permission to copy in any form is granted for use with conforming SGML systems and applications as defined in ISO 8879, provided this notice is included in all copies. -->
<!-- Relevant ISO entity set is given unless names are newly introduced. New names (i.e., not in ISO 8879 list) do not clash with any existing ISO 8879 entity names. ISO 10646 character numbers are given for each character, in hex. CDATA values are decimal conversions of the ISO 10646 values and refer to the document character set. Names are ISO 10646 names. -->
<!-- Latin Extended-B -->
<!ENTITY fnof CDATA "&#402;" -- latin small f with hook = function = florin, U+0192 ISOtech -->ƒ
<!-- Greek -->
<!ENTITY Alpha CDATA "&#913;" -- greek capital letter alpha, U+0391 -->Α
<!ENTITY Beta CDATA "&#914;" -- greek capital letter beta, U+0392 -->Β
<!ENTITY Gamma CDATA "&#915;" -- greek capital letter gamma, U+0393 ISOgrk3 -->Γ
<!ENTITY Delta CDATA "&#916;" -- greek capital letter delta, U+0394 ISOgrk3 -->Δ
<!ENTITY Epsilon CDATA "&#917;" -- greek capital letter epsilon, U+0395 -->Ε
<!ENTITY Zeta CDATA "&#918;" -- greek capital letter zeta, U+0396 -->Ζ
<!ENTITY Eta CDATA "&#919;" -- greek capital letter eta, U+0397 -->Η
<!ENTITY Theta CDATA "&#920;" -- greek capital letter theta, U+0398 ISOgrk3 -->Θ
<!ENTITY Iota CDATA "&#921;" -- greek capital letter iota, U+0399 -->Ι
<!ENTITY Kappa CDATA "&#922;" -- greek capital letter kappa, U+039A -->Κ
<!ENTITY Lambda CDATA "&#923;" -- greek capital letter lambda, U+039B ISOgrk3 -->Λ
<!ENTITY Mu CDATA "&#924;" -- greek capital letter mu, U+039C -->Μ
<!ENTITY Nu CDATA "&#925;" -- greek capital letter nu, U+039D -->Ν
<!ENTITY Xi CDATA "&#926;" -- greek capital letter xi, U+039E ISOgrk3 -->Ξ
<!ENTITY Omicron CDATA "&#927;" -- greek capital letter omicron, U+039F -->Ο
<!ENTITY Pi CDATA "&#928;" -- greek capital letter pi, U+03A0 ISOgrk3 -->Π
<!ENTITY Rho CDATA "&#929;" -- greek capital letter rho, U+03A1 -->Ρ
<!-- there is no Sigmaf, and no U+03A2 character either -->
<!ENTITY Sigma CDATA "&#931;" -- greek capital letter sigma, U+03A3 ISOgrk3 -->Σ
<!ENTITY Tau CDATA "&#932;" -- greek capital letter tau, U+03A4 -->Τ
<!ENTITY Upsilon CDATA "&#933;" -- greek capital letter upsilon, U+03A5 ISOgrk3 -->Υ
<!ENTITY Phi CDATA "&#934;" -- greek capital letter phi, U+03A6 ISOgrk3 -->Φ
<!ENTITY Chi CDATA "&#935;" -- greek capital letter chi, U+03A7 -->Χ
<!ENTITY Psi CDATA "&#936;" -- greek capital letter psi, U+03A8 ISOgrk3 -->Ψ
<!ENTITY Omega CDATA "&#937;" -- greek capital letter omega, U+03A9 ISOgrk3 -->Ω
<!ENTITY alpha CDATA "&#945;" -- greek small letter alpha, U+03B1 ISOgrk3 -->α
<!ENTITY beta CDATA "&#946;" -- greek small letter beta, U+03B2 ISOgrk3 -->β
<!ENTITY gamma CDATA "&#947;" -- greek small letter gamma, U+03B3 ISOgrk3 -->γ
<!ENTITY delta CDATA "&#948;" -- greek small letter delta, U+03B4 ISOgrk3 -->δ
<!ENTITY epsilon CDATA "&#949;" -- greek small letter epsilon, U+03B5 ISOgrk3 -->ε
<!ENTITY zeta CDATA "&#950;" -- greek small letter zeta, U+03B6 ISOgrk3 -->ζ
<!ENTITY eta CDATA "&#951;" -- greek small letter eta, U+03B7 ISOgrk3 -->η
<!ENTITY theta CDATA "&#952;" -- greek small letter theta, U+03B8 ISOgrk3 -->θ
<!ENTITY iota CDATA "&#953;" -- greek small letter iota, U+03B9 ISOgrk3 -->ι
<!ENTITY kappa CDATA "&#954;" -- greek small letter kappa, U+03BA ISOgrk3 -->κ
<!ENTITY lambda CDATA "&#955;" -- greek small letter lambda, U+03BB ISOgrk3 -->λ
<!ENTITY mu CDATA "&#956;" -- greek small letter mu, U+03BC ISOgrk3 -->μ
<!ENTITY nu CDATA "&#957;" -- greek small letter nu, U+03BD ISOgrk3 -->ν
<!ENTITY xi CDATA "&#958;" -- greek small letter xi, U+03BE ISOgrk3 -->ξ
<!ENTITY omicron CDATA "&#959;" -- greek small letter omicron, U+03BF NEW -->ο
<!ENTITY pi CDATA "&#960;" -- greek small letter pi, U+03C0 ISOgrk3 -->π
<!ENTITY rho CDATA "&#961;" -- greek small letter rho, U+03C1 ISOgrk3 -->ρ
<!ENTITY sigmaf CDATA "&#962;" -- greek small letter final sigma, U+03C2 ISOgrk3 -->ς
<!ENTITY sigma CDATA "&#963;" -- greek small letter sigma, U+03C3 ISOgrk3 -->σ
<!ENTITY tau CDATA "&#964;" -- greek small letter tau, U+03C4 ISOgrk3 -->τ
<!ENTITY upsilon CDATA "&#965;" -- greek small letter upsilon, U+03C5 ISOgrk3 -->υ
<!ENTITY phi CDATA "&#966;" -- greek small letter phi, U+03C6 ISOgrk3 -->φ
<!ENTITY chi CDATA "&#967;" -- greek small letter chi, U+03C7 ISOgrk3 -->χ
<!ENTITY psi CDATA "&#968;" -- greek small letter psi, U+03C8 ISOgrk3 -->ψ
<!ENTITY omega CDATA "&#969;" -- greek small letter omega, U+03C9 ISOgrk3 -->ω
<!ENTITY thetasym CDATA "&#977;" -- greek small letter theta symbol, U+03D1 NEW -->ϑ
<!ENTITY upsih CDATA "&#978;" -- greek upsilon with hook symbol, U+03D2 NEW -->ϒ
<!ENTITY piv CDATA "&#982;" -- greek pi symbol, U+03D6 ISOgrk3 -->ϖ
<!-- General Punctuation -->
<!ENTITY bull CDATA "&#8226;" -- bullet = black small circle, U+2022 ISOpub -->
<!-- bullet is NOT the same as bullet operator, U+2219 -->
<!ENTITY hellip CDATA "&#8230;" -- horizontal ellipsis = three dot leader, U+2026 ISOpub -->
<!ENTITY prime CDATA "&#8242;" -- prime = minutes = feet, U+2032 ISOtech -->
<!ENTITY Prime CDATA "&#8243;" -- double prime = seconds = inches, U+2033 ISOtech -->
<!ENTITY oline CDATA "&#8254;" -- overline = spacing overscore, U+203E NEW -->
<!ENTITY frasl CDATA "&#8260;" -- fraction slash, U+2044 NEW -->
<!-- Letterlike Symbols -->
<!ENTITY weierp CDATA "&#8472;" -- script capital P = power set = Weierstrass p, U+2118 ISOamso -->
<!ENTITY image CDATA "&#8465;" -- blackletter capital I = imaginary part, U+2111 ISOamso -->
<!ENTITY real CDATA "&#8476;" -- blackletter capital R = real part symbol, U+211C ISOamso -->
<!ENTITY trade CDATA "&#8482;" -- trade mark sign, U+2122 ISOnum -->
<!ENTITY alefsym CDATA "&#8501;" -- alef symbol = first transfinite cardinal, U+2135 NEW -->
<!-- alef symbol is NOT the same as hebrew letter alef, U+05D0 although the same glyph could be used to depict both characters -->
<!-- Arrows -->
<!ENTITY larr CDATA "&#8592;" -- leftwards arrow, U+2190 ISOnum -->
<!ENTITY uarr CDATA "&#8593;" -- upwards arrow, U+2191 ISOnum-->
<!ENTITY rarr CDATA "&#8594;" -- rightwards arrow, U+2192 ISOnum -->
<!ENTITY darr CDATA "&#8595;" -- downwards arrow, U+2193 ISOnum -->
<!ENTITY harr CDATA "&#8596;" -- left right arrow, U+2194 ISOamsa -->
<!ENTITY crarr CDATA "&#8629;" -- downwards arrow with corner leftwards = carriage return, U+21B5 NEW -->
<!ENTITY lArr CDATA "&#8656;" -- leftwards double arrow, U+21D0 ISOtech -->
<!-- ISO 10646 does not say that lArr is the same as the 'is implied by' arrow but also does not have any other character for that function. So ? lArr can be used for 'is implied by' as ISOtech suggests -->
<!ENTITY uArr CDATA "&#8657;" -- upwards double arrow, U+21D1 ISOamsa -->
<!ENTITY rArr CDATA "&#8658;" -- rightwards double arrow, U+21D2 ISOtech -->
<!-- ISO 10646 does not say this is the 'implies' character but does not have another character with this function so ? rArr can be used for 'implies' as ISOtech suggests -->
<!ENTITY dArr CDATA "&#8659;" -- downwards double arrow, U+21D3 ISOamsa -->
<!ENTITY hArr CDATA "&#8660;" -- left right double arrow, U+21D4 ISOamsa -->
<!-- Mathematical Operators -->
<!ENTITY forall CDATA "&#8704;" -- for all, U+2200 ISOtech -->
<!ENTITY part CDATA "&#8706;" -- partial differential, U+2202 ISOtech -->
<!ENTITY exist CDATA "&#8707;" -- there exists, U+2203 ISOtech -->
<!ENTITY empty CDATA "&#8709;" -- empty set = null set = diameter, U+2205 ISOamso -->
<!ENTITY nabla CDATA "&#8711;" -- nabla = backward difference, U+2207 ISOtech -->
<!ENTITY isin CDATA "&#8712;" -- element of, U+2208 ISOtech -->
<!ENTITY notin CDATA "&#8713;" -- not an element of, U+2209 ISOtech -->
<!ENTITY ni CDATA "&#8715;" -- contains as member, U+220B ISOtech -->
<!-- should there be a more memorable name than 'ni'? -->
<!ENTITY prod CDATA "&#8719;" -- n-ary product = product sign, U+220F ISOamsb -->
<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though the same glyph might be used for both -->
<!ENTITY sum CDATA "&#8721;" -- n-ary sumation, U+2211 ISOamsb -->
<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma' though the same glyph might be used for both -->
<!ENTITY minus CDATA "&#8722;" -- minus sign, U+2212 ISOtech -->
<!ENTITY lowast CDATA "&#8727;" -- asterisk operator, U+2217 ISOtech -->
<!ENTITY radic CDATA "&#8730;" -- square root = radical sign, U+221A ISOtech -->
<!ENTITY prop CDATA "&#8733;" -- proportional to, U+221D ISOtech -->
<!ENTITY infin CDATA "&#8734;" -- infinity, U+221E ISOtech -->
<!ENTITY ang CDATA "&#8736;" -- angle, U+2220 ISOamso -->
<!ENTITY and CDATA "&#8743;" -- logical and = wedge, U+2227 ISOtech -->
<!ENTITY or CDATA "&#8744;" -- logical or = vee, U+2228 ISOtech -->
<!ENTITY cap CDATA "&#8745;" -- intersection = cap, U+2229 ISOtech -->
<!ENTITY cup CDATA "&#8746;" -- union = cup, U+222A ISOtech -->
<!ENTITY int CDATA "&#8747;" -- integral, U+222B ISOtech -->
<!ENTITY there4 CDATA "&#8756;" -- therefore, U+2234 ISOtech -->
<!ENTITY sim CDATA "&#8764;" -- tilde operator = varies with = similar to, U+223C ISOtech -->
<!-- tilde operator is NOT the same character as the tilde, U+007E, although the same glyph might be used to represent both -->
<!ENTITY cong CDATA "&#8773;" -- approximately equal to, U+2245 ISOtech -->
<!ENTITY asymp CDATA "&#8776;" -- almost equal to = asymptotic to, U+2248 ISOamsr -->
<!ENTITY ne CDATA "&#8800;" -- not equal to, U+2260 ISOtech -->
<!ENTITY equiv CDATA "&#8801;" -- identical to, U+2261 ISOtech -->
<!ENTITY le CDATA "&#8804;" -- less-than or equal to, U+2264 ISOtech -->
<!ENTITY ge CDATA "&#8805;" -- greater-than or equal to, U+2265 ISOtech -->
<!ENTITY sub CDATA "&#8834;" -- subset of, U+2282 ISOtech -->
<!ENTITY sup CDATA "&#8835;" -- superset of, U+2283 ISOtech -->
<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol font encoding and is not included. Should it be, for symmetry? It is in ISOamsn -->
<!ENTITY nsub CDATA "&#8836;" -- not a subset of, U+2284 ISOamsn -->
<!ENTITY sube CDATA "&#8838;" -- subset of or equal to, U+2286 ISOtech -->
<!ENTITY supe CDATA "&#8839;" -- superset of or equal to, U+2287 ISOtech -->
<!ENTITY oplus CDATA "&#8853;" -- circled plus = direct sum, U+2295 ISOamsb -->
<!ENTITY otimes CDATA "&#8855;" -- circled times = vector product, U+2297 ISOamsb -->
<!ENTITY perp CDATA "&#8869;" -- up tack = orthogonal to = perpendicular, U+22A5 ISOtech -->
<!ENTITY sdot CDATA "&#8901;" -- dot operator, U+22C5 ISOamsb -->
<!-- dot operator is NOT the same character as U+00B7 middle dot -->
<!-- Miscellaneous Technical -->
<!ENTITY lceil CDATA "&#8968;" -- left ceiling = apl upstile, U+2308 ISOamsc -->
<!ENTITY rceil CDATA "&#8969;" -- right ceiling, U+2309 ISOamsc -->
<!ENTITY lfloor CDATA "&#8970;" -- left floor = apl downstile, U+230A ISOamsc -->
<!ENTITY rfloor CDATA "&#8971;" -- right floor, U+230B ISOamsc -->
<!ENTITY lang CDATA "&#9001;" -- left-pointing angle bracket = bra, U+2329 ISOtech -->
<!-- lang is NOT the same character as U+003C 'less than' or U+2039 'single left-pointing angle quotation mark' -->
<!ENTITY rang CDATA "&#9002;" -- right-pointing angle bracket = ket, U+232A ISOtech -->
<!-- rang is NOT the same character as U+003E 'greater than' or U+203A 'single right-pointing angle quotation mark' -->
<!-- Geometric Shapes -->
<!ENTITY loz CDATA "&#9674;" -- lozenge, U+25CA ISOpub -->
<!-- Miscellaneous Symbols -->
<!ENTITY spades CDATA "&#9824;" -- black spade suit, U+2660 ISOpub -->
<!-- black here seems to mean filled as opposed to hollow -->
<!ENTITY clubs CDATA "&#9827;" -- black club suit = shamrock, U+2663 ISOpub -->
<!ENTITY hearts CDATA "&#9829;" -- black heart suit = valentine, U+2665 ISOpub -->
<!ENTITY diams CDATA "&#9830;" -- black diamond suit, U+2666 ISOpub -->

domingo, 16 de diciembre de 2007

The Kung-Fu Mix



Recuerdo varias excursiones en coche con mis padres, siendo yo un niño.

Mi padre grababa cintas de cassette con los éxitos de aquel momento (años 70) o de su juventud, y en cada viaje nos entreteníamos escuchando un buen repertorio de canciones.

Un "poco" más tarde (en 1999) se me ocurrió dedicar unas cuantas horas a recopilar en un non-stop mix algunos de los temas de aquellas cintas entrañables.

Como D.J. frustrado, tengo que decir que mezclar música de los 70 es algo más complicado comparado con otros estilos posteriores, porque pese a que hay ritmos perfectamente bailables, los típicos "breaks" de la música disco no abundan. Además (y esto se puede comprobar con un simple cronómetro) en muchos casos la peña no mantenía el ritmo durante la canción, con lo que si intentas mezclar sin ayudas externas, tienes bastantes números de meterte en una cacofonía de la que no sales si no paras la mezcla.

Por suerte, cuando me decidí a grabar el disco ya tenía la posibilidad de utilizar editores de sonido (Cool Edit en mi caso, aunque ahora parece que se llama Audition), por lo que el trabajo no fue tan complicado.

La mezcla creo que no salió mal del todo. Se puede escuchar a través del gadget en esta entrada.

Y como había que ponerle un nombre, aproveché parte del título de una de las canciones.

Esta es la historia del Kung-Fu Mix. Incluye lo siguiente:

1. Dancing QueenAbba3:40 1976
2. Love's themeBarry White3:44 1974
3. CeciliaSimon & Garfunkel3:071970
4. Rock your babyGeorge McGrae6:16 1974
5. You set my heart on fireTina Charles4:45 1976
6. Kung-Fu fighting '86Carl Douglas4:30 1974
7. Nice & slowJesse Green2:36 1976
8. Suspicious mindsElvis Presley3:23 1969
9. Da ya think I'm sexyRod Stewart5:10 1978
10.Heart of glassBlondie3:26 1978
11.Lay love on youLuisa Fernandez3:53 1978
12.Automatic loverDee D. Jackson4:461979
13.Gotta go home Boney M.4:50 1979
14.Bend me, shape meGilla3:19 1978
15.Sun of JamaicaGoombay Dance Band3:56 1979
16.Sugar baby loveThe Rubbettes3:221974
17.Seven lonely daysSheila B. Devotion5:14 1979

viernes, 14 de diciembre de 2007

El chiste de Eugenio del basalto.



Como ya dije en esta otra entrada he estado buscando el chiste de Eugenio del basalto (o de la piedra) durante algún tiempo.

Creo que es uno de sus mejores "acudits", de su mejor época (que para mí fue la primera, cuando se hizo famoso).

Hacía días que lo había conseguido pero no encontraba el momento de editar la grabación y subirlo.

Hoy por fin he podido, ya estoy más tranquilo.

lunes, 10 de diciembre de 2007

Te lo juro por spoofing

Hoy me he acordado de esta memez que estuvimos utilizando durante una época en la que un firewall que estabamos migrando nos la jugaba cortando tráfico legítimo que consideraba como spoof.

domingo, 9 de diciembre de 2007

LAMP, stands for?

Linux-Apache-MySQL-PHP.

And what is WAMP? And MAMP?

WAMP is Windows-Apache-MySQL-PHP and MAMP refers to Macintosh-Apache-MySQL-PHP.

sábado, 8 de diciembre de 2007

Aventuras con NetMRG

NetMRG es una herramienta de monitorización en red basado en software libre, que a su vez utiliza otras herramientas como RRDtool, Net-SNMP, Apache y MySQL.

A simple vista parece un proyecto sin demasiadas pretensiones en el que Brady Alleman y Doug Warner hubieran querido simplificar el "océano" Nagios.

He estado trabajando con NetMRG estas últimas semanas, y hay que reconocer que una vez lo tienes funcionando apenas da problemas. Pero en general he de decir que el programa no me convence.

Creo que su principal defecto es la interface gráfica: Me parece simplemente anti-intuitiva. Y a pesar de todo, con un poco de esfuerzo te acabas haciendo a ella.

La documentación es otro de los puntos flojos. Como ejemplo explicaré algo que no he conseguido encontrar en ella: Cómo resetear las gráficas de los monitores definidos.

Reiniciar NetMRG no sirve para este caso, y como es lógico no quería reinstalar el programa por completo. Así que he tenido que tirar del hilo que arrancaba en los gráficos rrd (generados a traves de la RRDtool). Tras una búsqueda con find he visto que en mi caso los gráficos se almacenan en el directorio /var/lib/netmrg/rrd.

Así que he sacado mi lado más bruto y he renombrado ese directorio como rrd.old, después he creado un nuevo directorio rrd (que he dejado vacío) y he reproducido los permisos del rrd original.

Y como me temía, los gráficos han dejado de verse. A los cinco minutos, en la siguiente monitorización, se han generado nuevos archivos .rrd pero yo seguía sin ver gráfico alguno en mi navegador (?).

Sabiendo que la interface web está corriendo sobre un Apache he revisado el httpd.conf correspondiente para así obtener la ruta del fichero de log de error correspondiente, con la esperanza de obtener alguna pista. Bingo:

[nouser@nohost]# tail /var/log/httpd/error_log
...

ERROR: opening '/var/lib/netmrg/rrd/zero.rrd': No such file or directory
ERROR: opening '/var/lib/netmrg/rrd/zero.rrd': No such file or directory

ERROR: opening '/var/lib/netmrg/rrd/zero.rrd': No such file or directory
ERROR: opening '/var/lib/netmrg/rrd/zero.rrd': No such file or directory

Tras esto he restaurado en /var/lib/netmrg/rrd el zero.rrd que tenía en /var/lib/netmrg/rrd.old y todo ha vuelto funcionar, con los gráficos reseteados tal como yo quería.

Por si le sirve a alguien.

jueves, 6 de diciembre de 2007

Consulta usuarios que usan un Windows netlogon script común

Una característica de Cygwin, que creo que lo convierte en un programa especial, es que permite combinar el uso de comandos nativos de Windows con la potencia del intérprete de comandos bash

En el ejemplo de uso que presento he utilizado la salida del comando addusers.exe (incluido en el Resource Kit descargable desde el site de Microsoft) para consultar detalles de usuarios pertenecientes a un dominio, y mediante un entubado con grep y cut, obtener aquellas cuentas cuyo perfil utilizan un netlogon script determinado.

Un detalle a tener en cuenta es que el usuario que ejecuta la llamada requiere de los permisos necesarios para hacer este tipo de consultas en el dominio al que se pregunta.

Es viable incluir toda la petición en una única linea, aunque aquí he preferido escapar la primera linea, por una cuestión de presentación en el weblog:

nouser@nohost
$ DOMAIN="MIDOMINIO";FILE="addusers.txt";BAT="MiNetlogon.bat";\
> addusers.exe /d $FILE $DOMAIN 1>/dev/null;grep $BAT $FILE|cut -f1 -d,

DBloody
PSmolarek
DDancer
JBicicle
DNotes
APresidente
MPeruvian
JCaja
DMagdalenas

nouser@nohost
$


Como es de suponer, los valores de las tres varibles que encabezan la petición (DOMAIN, FILE y BAT), se deben parametrizar con lo que corresponda en cada caso.

La llamada al addusers.exe genera un fichero $FILE que puede que prefiramos borrar. En ese caso (previo a asegurarse con echo $FILE que la variable no ha perdido el valor que se espera):

nouser@nohost
$ rm -f $FILE


ACTUALIZACION (añadido) (2007-12-08): Cuidado con los espacios en FILE y BAT. En teoría en ese caso habría que encerrar entre comillas dobles cada uno de los usos que hicieramos de las variables... Pero mejor olvisarse de ellos.

ACTUALIZACION (añadido) (2007-12-09): En relación a la actualización anterior, añadir que los espacios en el nombre de los scripts de netlogon quedan totalmente desaconsejados por posibles problemas como el que paso a describir:

- Usuario1, su profile indica el netlogon script "Delegacion.bat"
- Usuario2, su profile indica el netlogon script "Delegacion Departamento.bat"

Se comprueba que en un Active Directory corriendo sobre máquinas con W2K, Usuario1 inicia sesión de forma correcta, pero Usuario2 inicia sesión ejecutando el contenido de "Delegacion.bat" (incorrecto). ¿Motivo? No lo sé, cosas de Windows. Entiendo que el espacio "confunde" al parser del proceso encargado de decidir cual es el script que hay que aplicar.

El problema descrito no ocurre si el netlogon script se llama "Delegacion_Departamento.bat" o "DelegacionDepartamento.bat" (y el respectivo fichero .bat existe en el controlador de dominio, por supuesto).

domingo, 2 de diciembre de 2007

División entre cero ¿igual a infinito? FALSO!!!

El viernes nos dió por discutir cuál era el resultado de dividir un número entre cero.

Yo siempre había considerado inaceptable la utilización de esta operación en cualquier ámbito matemático. Pero es cierto que el debate me ha servido para revisar algunos conceptos que tenía medio olvidados, y poder darme cuenta que no estaba siendo del todo estricto (como se presupone de quienes hemos cursado estudios técnicos).

En concreto, en la mayoría de contextos matemáticos (habitualmente números reales a los que se añade +∞ y -∞ (+infinito y -infinito) [1]) la operación de dividir un número entre 0 se define como:

- Indefinida, si el dividendo es distinto de 0 (p. ej. 1/0): Significa que NINGUN valor devuelto sería válido (desarrollado más abajo).

- Indeterminada, si el dividendo es 0 (0/0): Significa que CUALQUIER valor devuelto sería válido [2].

Debido a estas caraterísticas (indefinición e indeterminación) la operación división entre cero no se admite para llevar a cabo otras demostraciones (que en estos contextos resultarían incorrectas o absurdas, como la descrita en este link o en [3])

Tras esta auto-aclaración (en la que me he aclarado conceptos a mi mismo), me ha sorprendido lo extendida que está la corriente que asegura que cualquier número dividido entre cero es... INFINITO!!! COMORL?!?!?!

Tras empaparme con contenidos de algunas webs, libros y antiguos apuntes, he comprendido de dónde surge esta creencia, que por desgracia para los que la defienden es errónea e indemostrable, como explicaré a continuación:

Tomando un numerador distinto de 0 (debido a lo explicado en [2]), por ejemplo numerador 1, trataremos la función siguiente

f(x) = 1/x

Por definición: Una función es continua en un punto si existe límite en él y coincide con el valor que toma la función en ese punto.

Entonces si quisieramos intentar demostrar que 1/x puede tomar algún valor para x = 0, sería necesario demostrar que la función es continua en ese punto. Para ello deberíamos demostrar que existe el siguiente límite:

lim 1/x
x→0

El límite de 1/x cuando x tiende a cero por la derecha es +∞, mientras que cuando tiende a cero por la izquierda es -∞. Mediante notación:

lim 1/x = +∞
x→0+

lim 1/x = -∞
x→0-

En análisis matemático cuando un límite es +∞ o -∞ se considera que ese límite no existe.

Pero además, según uno de los múltiples teoremas de tratamiento de límites utilizados en análisis: Existe el límite si y solo si existen los límites laterales (por la derecha y por la izquierda) y ambos coinciden.

Por cualquiera de las dos razones anteriores

lim 1/x
x→0

no existe.

La consecuencia de esto es por un lado la discontinuidad de la función 1/x en el punto x = 0, y por otro que no exista ningún valor posible para la función en ese punto (valor que coincidiría con el del resultado de la operación 1/0).

Este tipo de discontinuidad en el que uno de los límites (o ambos) son no-finitos se conoce como discontinuidad asintótica.

La misma explicación anterior de una forma algo más práctica:

El límite de 1/x cuando x tiende a 0 con valores positivos (por la derecha) nos lleva, más o menos, a algo así:

1 / 1 = 1
1 / 0.1 = 10
1 / 0.01 = 100
...
1 / 0.00000000000001 = 100000000000000

Podemos hacer que el divisor se acerce a 0 tanto como queramos. Y cuanto más cercano a 0, mayor es el número que resulta. Entonces decimos que el límite que tratamos tiende a .

Esto se puede representar gráficamente de la siguiente manera:



A medida que aproximamos valores de x a cero, el valor de y (o si se prefiere f(x) ) crece cada vez más.

De manera similar, aplicamos lo visto con divisores negativos (x tendiendo a cero por la izquierda):

1 / -1 = -1
1 / -0.1 = -10
1 / -0.01 = -100
...
1 / -0.00000000000001 = -100000000000000

Incorporando los nuevos valores al gráfico anterior resulta lo siguiente:



Ahora a medida que aproximamos valores negativos de x a 0, el valor de y se hace cada vez menor ( f(x) tiende a -∞).

Como se ha dicho antes, el hecho de que al acercarnos a 0 desde números positivos tienda a un resultado (+) distinto del resultado al que tiende cuando nos acercamos a 0 desde números negativos (-) es suficiente para afirmar que la función no puede tomar ningún valor en el punto x=0.

La conclusión 1/0 = ∞ podría tener algo más de sentido si tomaramos sólo el contexto de los reales positivos. Entonces f(x) = 1/x sólo podría tomar divisores positivos, y en consecuencia diríamos que el resultado tiende a un único valor, que es +. Pero si desde ahí deducimos que 1/0 = +∞ caemos de nuevo en un error porque la propia definición del límite nos dice que el denominador "tiende a cero", mientras que en la deducción se está considerando que el valor del denominador es exactamente "igual a cero" (pero la definición excluye ese valor).

Todavía "más" práctico: Es como si me acerco a un precipicio. Puedo estar muy cerca del borde y aun así recorrer la mitad de lo que queda hasta llegar a él. Seguiré pudiendo hacer esto las veces que quiera, mientras me lo permita mi precisión en recorrer distancias cada vez menores. Y mediante leyes físicas podré demostrar que seguiré sin caerme porque el punto que sustenta mi centro de gravedad sigue en el lado desde donde empecé a acercarme, aunque me encuentre rematadamente cerca del borde del precipicio. Pero no puedo asegurar qué pasará si en lugar de recorrer la mitad, recorro justo la distancia de lo que queda. Puede que caiga, puede que no... Puedo hacer mil suposiciones pero en ese punto ya no puedo demostrar nada de lo que demostré antes.

En conclusión, tampoco podemos basarnos en la expresión que describe que

lim 1/x = +∞
x→0+

para argumentar que 1/0 = +∞, porque en la propia definición del límite el 0 como divisor queda excluido (aunque incluya números tan cercanos a él como se quiera).

Pese a lo que pueda parecer nunca me gustaron mucho las matemáticas. Reconozco que en este post me he movido en un terreno en el que no soy ningún experto, por lo que he intentado documentarme todo lo que he podido. Cualquiera que entienda del tema y piense que debería rectificar algo, queda invitado a dejar su comentario indicándo lo que considere oportuno.

En recuerdo de Ramón Parés, mi profesor de mates de BUP y COU, del que por desgracia perdí la pista hace muchos años.


Anotaciones:

[1] +∞ y -∞ se consideran números no incluidos en el conjunto de los números reales

[2] 0/0 es una operación indeterminada. Esto es así porque cualquier resultado que se quiera asignar a la operación es válido. Se puede ver convirtiendo 0/0 = 0 en 0 = 0*0, pero también llegamos a 0/0 = 1 ya que 0 = 0*1, y también a 0/0 = 3.1415927 ya que 0 = 0*3.1415927. Y así sucesivamente con cualquier otro número del contexto de los números reales. En este link se presenta una representación gráfica de lo explicado aquí.

0*∞ se considera a su vez una indeterminación, aunque como se ha dicho en [1] no se considera un número incluido en el conjunto de los números reales. Otras indeterminaciones en este link

[3] Si utilizamos la indeterminación 0/0 en alguna demostración llegamos a conclusiones erróneas. P. ej.: Sabiendo que 0/0 = 1 es correcto y que 0/0 = 2 también lo es, podríamos concluir

0/0 = 1
0/0 = 2

y por tanto 1 = 2, lo cual es absurdo.


Fuentes:

- ANALISI MATEMATICA D'UNA VARIABLE - Edició setembre de 1999 - Eusebi Jarauta Bragulat - Edicions UPC - ISBN 84-89636-37-0
- CURSO PRACTICO DE MATEMATICAS DE COU - 2ª edición - F.Gonzalez-J.Villanova - EDUNSA Ediciones y Distribuciones universitarias S.A. - ISBN 85-85257-50-2
- MATEMATICA 3º Bachillerato - 4ª edición - J. Boadas-R. Romero-R.Villalbí - Editorial Teide - ISBN 84-307-3185-7
- MATEMATICAS 2º BUP - 4ª edición - Pedro Solà Montserrat - Editorial Casals S.A. - ISBN 84-218-0015-9
http://en.wikipedia.org/wiki/Division_by_zero
http://es.wikipedia.org/wiki/L%C3%ADmite_matem%C3%A1tico
http://es.wikipedia.org/wiki/Divisi%C3%B3n_por_cero#Paradoja_cl.C3.A1sica_usando_Divisi.C3.B3n_por_Cero
http://www.friesian.com/zero.htm
http://thales.cica.es/rd/Recursos/rd97/UnidadesDidacticas/39-1-u-continuidad.html
http://thales.cica.es/rd/Recursos/rd97/UnidadesDidacticas/58-Capitulo2.htm
http://www.monografias.com/trabajos13/nocla/nocla.shtml


ACTUALIZACION (modificación) (2007-12-16): He cambiado las cadenas "infinito" y "->" (tiende a) por sus correspondientes símbolos HTML.