20081030

a chingarse bonito

Frase imperativa que en los talleres mecánicos -aunque eso no exime a ningún tipo de empresa- enuncia, normalmente, el empleado de mayor jerarquía a uno o varios de sus subalternos, para sugerirles que trabajen intensa y esmeradamente.
ref. num. 46, año XI, pp 39 algarabia.com.mx

20081027

uso del time zone en UNIX ó por que Superman la cagó ...

Hace unos días solicite a mis compañeros de trabajo me reenviaran este correo que tuve a bien redactar en su momento con la intención de compartir y asi mismo divertirlos.

Sucedió en una noche de trabajo bajo la presión de entregar un proyecto a la empresa, que la discusión entre dos compañeros de trabajo le llevo a uno decirle al otro, que el podría arreglar el programa en cuestión siempre y cuando le dieran una hora, a lo cual el otro en un tono bastante sarcastico le replicó: "pues vas superman..."


He aquí su historia:


Resulta que Superman estaba tratando de obtener la superinformation del superserver del superdía anterior, via el siguiente superscript ...

#!/bin/sh
FILE='/home/proyect/app/mania'`TZ=aaa24 date +%m%d%Y`'.cvs'
echo $FILE
MIN=0
sftp mania@12.10.20.88 < file2="'mania'`TZ=">
...
peeeero cuando se hicieron las superpruebas para la superliberación, pues nel ! estaba jalando la superinformación del superdía actual (o sea, hoy... tudeiii dijera Fox)

Cosa que desato la ira ( si IRA, ira como se estan dando .. ira como se dijeron .. ) de Superman en contra de Lex Luthor y sus batinenas... ( no las del excesss... )


Ni el superserver estaba mal configurado, ni el shell esta mal ... vaya ni Oraclito pues !


Cosa de poner atención a como junciona el tieeeempo en el planeta tierra, ahi les

dejo caer la explicación.

How to date command works in unix for dummies in 20 mins !
(no more less && so so anymore ..., mins is minuts, not means... NfD*, NfD* is Note for Dummies)

el siguiente comandito, ese que aparece en el superscript:

$ TZ=aaa24 date
es el equivalente a:
$ TZ=UTC+24 date
Ya que la idea es que nos regrese la fecha del día de ayer, o sea el anterior al día de hoy :-P (digo, explico por aquello del dummies, oka ? )

Veamos:

  • Partimos del hecho que UTC(CDT) es la base para calcular la hora en distintos paises vaya, es lo _innnnn_... el GTM wuakala, ya no esta a la moda
  • Nuestra Zona Horaria en UTC es UTC+5, es decir tenemos 5 horas de retraso (si, el + maaas es pa retrasar.. ) respecto a la Hora Universal Coordinada (UTC es el acronimo para Universal Time Coordinated NfD*).
  • Ejemplos, en este momento en México son las 5:40AM, veamos la hora en otros paises (No me creen ?):
UTC              = 10:40
Mexico (UTC+5) = 05:40
China (UTC-8) = 18:40
Italia (UTC-2) = 12:40
Brasil (UTC+3) = 07:40
  • Solo podemos movernos entre -24 y +24, numeros mayores(o menores) no aplican. (aquí no hay NfD*. si, punto)

Para comprender por que Superman la cagó, veamos la siguiente tabla:

+---------------------------------+
| LOCAL | UTC | UTC-24 | UTC+24 |
| 0:00 | 5:00 | 26-Ago | 25-Ago |
| 1:00 | 6:00 | 26-Ago | 25-Ago |
| 2:00 | 7:00 | 26-Ago | 25-Ago |
| 3:00 | 8:00 | 26-Ago | 25-Ago |
| 4:00 | 9:00 | 26-Ago | 25-Ago |
| 5:00 | 10:00 | 26-Ago | 25-Ago |
| 6:00 | 11:00 | 26-Ago | 25-Ago |
| 7:00 | 12:00 | 26-Ago | 25-Ago |
| 8:00 | 13:00 | 26-Ago | 25-Ago |
| 9:00 | 14:00 | 26-Ago | 25-Ago |
| 10:00 | 15:00 | 26-Ago | 25-Ago |
| 11:00 | 16:00 | 26-Ago | 25-Ago |
| 12:00 | 17:00 | 26-Ago | 25-Ago |
| 13:00 | 18:00 | 26-Ago | 25-Ago |
| 14:00 | 19:00 | 26-Ago | 25-Ago |
| 15:00 | 20:00 | 26-Ago | 25-Ago |
| 16:00 | 21:00 | 26-Ago | 25-Ago |
| 17:00 | 22:00 | 26-Ago |*25-Ago | * hasta aquí, Superman felíz
| 18:00 | 23:00 | 26-Ago | 25-Ago |
| 19:00 | 0:00 | 27-Ago |*26-Ago | * aqui la puerka tuerce el rabo !
| 20:00 | 1:00 | 27-Ago | 26-Ago |
| 21:00 | 2:00 | 27-Ago | 26-Ago |
| 22:00 | 3:00 | 27-Ago | 26-Ago |
| 23:00 | 4:00 | 27-Ago |*26-Ago | * aqui Superman vs Batiunix
+---------------------------------+
  • En correspondencia a nuestra zona horaria (+5), para poder obtener una fecha pasada o futura necesitaremos movernos entre las 0 y las 18 hrs, cuando se den las 19 horas, entonces nos dara el mismo día.
Por qué ?

Bueno, 19hrs + 5hrs (de nuestro TZ "taimmm zonnnn") = 24hrs ó 0hrs es decir, cuando nos da 0hrs ni se suma ni se resta, sino todo lo contrario.. ehhh ! ORALE CHAMACOS !


Como Superman quería la fecha del día anterior, siendo hoy 26-Ago, necesitaba un 25-Ago para el superscript; cuando lo mando a ejecutar a la 5PM sí le regreso el día anterior (25); pero cuando lo ejecutamos a las 23PM al plancharlo en produción nos regreso el mismo día (26) y laaaastima, dieron reversa ...


Por esa razón, Superman la cagó.


Luego entonces, hay que zurrar a la gente pero también hay que pasarle el papel

pa'que se limpien...

Cómo calcular fechas en:

PERL
"un dia anterior = ayer"
$ perl -e "print scalar(localtime(time()-86400))"

"un dia después = mañana"
$ perl -e "print scalar(localtime(time()+86400))"


C (muy 3133t)

#include
#include
int main()
{
time_t localtime;
time(&localtime);
localtime = localtime - 86400;
printf("%s",ctime(&localtime));
return 0;
}

$ cc yesterday.c -o yesterday
$ ./yesterday

Después, todo fue miel sobre ojuelas :-)

code it !

20081026

la frasezota !

La principal causa de la difusión de la ignorancia es el hecho de que todos saben leer y escribir.
... a decir de Peter de Vries, ref. algarabia.com.mx, sabidurias.com

20081025

aplicar parches en WebLogic 8 y 9

pues como nota:

si quieres aplicar parches al WebLogic (8 y 9) existe una variable de ambiente donde se pueden colocar(PATCH_CLASSPATH), el archivo es relativo al dominio (setDomainEnv.sh) y no es necesario afectar la instalación de WL.

El archivo en cuestión es el $DOMAIN/bin/setDomainEnv.sh y las lineas son las siguientes:

..
# If you want to override the default Patch Classpath, Library Path and Path for this domain,
# Please uncomment the following lines and add a valid value for the environment variables
# set PATCH_CLASSPATH=[myPatchClasspath] (windows)
# set PATCH_LIBPATH=[myPatchLibpath] (windows)
# set PATCH_PATH=[myPatchPath] (windows)
# PATCH_CLASSPATH=[myPatchClasspath] (unix)
# PATCH_LIBPATH=[myPatchLibpath] (unix)
# PATCH_PATH=[myPatchPath] (unix)

# para colocar parches esta la variable de ambiente: PATCH_CLASSPATH que se adjuntara antes
# del WEBLOGIC_CLASSPATH esto lo pueden ver en el common/bin/commEnv.sh
P_798814="${DOMAIN_HOME}/patch/798814/532B.jar"
P_CR3805="${DOMAIN_HOME}/patch/CR380517_920mp2.jar"
PATCH_CLASSPATH="${P_CR3805}${CLASSPATHSEP}${P_798814}"
export PATCH_CLASSPATH

. ${WL_HOME}/common/bin/commEnv.sh
..

y listo, con eso solo alteramos el comportamiento del dominio donde deseamos aplicar el parche y no toda la instalación del WL y por ende todos los dominios.

code it !

20081024

la frasezota !

Me gustan los cerdos.
Los perros nos ven pa'rriba, los gatos nos ven pa'bajo. Sólo nos cerdos nos tratan como iguales.
... a decir de Sir Winston Churchill, ref. algarabia.com.mx, netotem.com y proverbia.net

bajo la sal ...

Si bien no es la finalidad de este blog, si quieren pasar un rato de suspenso vayan al cine de su preferencia y vean la pelicula "Bajo la Sal", buena trama, buenos actores (de los pocos que quedan y jovenes que resaltan) y en terminos generales _aceptable_. Aunque la historia en un momento llega a ser predecible, es entretenida y logra mantenerte en la butaca.

No conocia Guerrero Negro, que es el estado donde se desarrolla la trama y me parecio un lugar bastante interesante (al menos para hacer algo de fotografía) así que tendré que anotarlo en la lista de lugares por conocer.

Así que, ya tienes algo que ver este fin de semana :-)

code it !

20081017

git aptrigger

Qué paso viejo !

Pues mira, aptrigger es una aplicación shell para ejecutar otras aplicaciones en ambientes like UNIX de manera muy similar a como lo hace el "service" de los RedHat ó Fedora.

De momento es una versión preliminar y aun falta mucho por trabajar, de momento lo he usado para ejecutar aplicaciones basadas en:
* WebLogic
* iPlanet
* Resin
* .. y otras de carácter personal

De manera similar estaré publicando diversos proyectos con la finalidad de generar mi webfolio laboral en espera de que te sea de útilidad lo que estoy trabajando.

El repositorio lo puedes encontrar aqui, se encuentra en GIT la cual recomiendo ampliamente si te mueves entre distintos equipos y deseas seguir desarrollando sin necesidad de estar con un repositorio centralizado (like Subversion o CVS, los cuales también son buenos).

code it !