jueves, 24 de abril de 2008

Autodesalojo

El Ministro Secretario General de Gobierno, Francisco Vidal, dijo que la instrucción de la Presidenta de la República a sus ministros y ministras en el Consejo de Gabinete realizado esta mañana es "evitar las ineficiencias, desterrar las ineptitudes y avanzar en esa dirección que es nuestro compromiso final con la ciudadanía".
¿Comenzarán una vez por todas a hacer bien la pega?

Vamos aclarando algunos términos:

ineptitud.
(Del lat. ineptitūdo).

1. f. Inhabilidad, falta de aptitud o de capacidad.
(Fuente: RAE)
Si van a desterrar la ineptitud entonces mejor que todos ¡abandonen la Moneda de inmediato!.

A la luz de los últimos hechos y contradiciendo lo dicho anteriormente, nada me sorprende de este gobierno ni de la política en general, la verdad es que ni siquiera es escepticismo, es sencillamente un me-da-lo-mismo-ismo. Se ha llegado a niveles patéticos y rídiculos de "desarollo de políticas" en general , sin embargo, todo se resuelve de la misma forma, entre los mismos de siempre, en el lugar de siempre, con los objetivos de siempre y por supuesto: con los resultados de siempre.

Lo que mejor hace la clase política es arreglarse los bigotes, lo demás es sólo inercia.

Lamentablemete a nosotros nos toca lo que sale del WC de La Moneda y el Congreso.

miércoles, 23 de abril de 2008

Frambuesas

Las frambuesas son ricas, a mi me gustan. Hay gente que hace negocio con las frambuesas y eso no tiene nada de malo, sin embargo usar herramientas u objetos de propiedad fiscal para hacer negocios con frambuesas, eso si es malo.

"Pese a esta situación y tras conversarlo con la subsecretaria, Vidal indicó que quedó conforme con la explicación que le dio Wolff al respecto".


Aún no conozco esa explicación a pesar de que el auto también me pertenece.

No entiendo porqué me sorprende esta situación :|.

Actualización: La repartidora de frambuesas renunció.

martes, 22 de abril de 2008

Array vs Array (PHP)

Hace unos días tuve que crear un sistema para inventarios bastante extraterrestre, de eso salieron varias cosas.
Tuve la necesidad de comparar dos stock, dada ciertas condiciones del proyecto no pude resolverlo SQL ya que sería una vuelta muy larga, así que recurrí a los viejos Array. La función se llama increíblemente compararArray().

function compararArray($array1, $array2){
foreach($array1 as $valor){
if(in_array($valor,$array2)){
return true;
}else{
return false;
break;
}
}
} ?>


El recorrido lo hice en este caso con foreach() y busco el elemento con la función in_array() , foreach() lo pueden reemplazar con for() tomando como delimitador $i la cantidad de elementos del array 1. Esto los pueden contar con count(). Luego el valor de $i en el for() lo usan como índice en el arreglo 1 para identificar el elemento a buscar en el array 2.
Esta última forma no la escribiré aún, el cuento es pensar un poquito ;).

viernes, 18 de abril de 2008

Diegeek

Mi hijo nació con la tecnología debajo del brazo :D y me tomé la libertad de crear el primer nick de Diego: Diegeek, me suena parecido a otro pero no recuerdo dónde lo escuché.....




Hace un tiempo mi papá me adelantó parte de la herencia, entregándome el primer computador que tuvimos en casa, un Sinclair ZX Spectrum. Lamentablemente el pobre, electrónicamente hablando, pasó a mejor vida aunque físicamente se mantiene impeque.


El ZX nos abruma con su enorme cantidad de memoria

Ojalá este fósil perdure, Diego por lo menos lo mantiene limpiecito, en efecto, aquí lo vemos preparando el ritual de limpieza de la reliquia


Definitivamente mi viejo lo dejó en buenas manos ;).

lunes, 14 de abril de 2008

La extensión de un archivo (PHP)

Muchas veces, cuando desarrollamos alguna aplicación web con PHP se nos hace necesario subir archivos, lo cual requiere crear código seguro y que no deje cabos sueltos. Debemos controlar perfectamente que el usuario suba el archivo que corresponda y no algún bicharraco. Para ellos les dejo esta función que extráe la extensión de un archivo con lo que podremos controlar el tipo de datos que suben los usuarios a nuestro servidor.
Ocupé las funciones PHP strtolower() que nos cambiará a minúsculas el nombre del archivo en caso de que venga con mayúsculas; explode() para separar el nombre de la extensión tomando el punto como ente separarador y end() que , en caso de que el nombre del archivo esté compuesto por puntos (ejemplo: fotos.chile.jpg) siempre considere el último elemento del array generado.

<?
function tipoArchivo($elArchivo)
{
$laExtension=strtolower(end(explode('.',$elArchivo)));
return $laExtension;
}
?>

viernes, 11 de abril de 2008

Libros: Bestiario Medieval

Bestiario Medieval es el último libro del ciclo de lecturas sobre religiones y mitología que me autoimpuse. El libro reune relatos sobre los diversos animales que habitaron el universo medieval, los cuales han sido obtenidos de distintos bestiarios de la época (Physiologus) y otras fuentes de la antigüedad (contenidas en la abundante bibliografía citada por el autor). La obra está precedida por un estudio introductorio a cargo del autor, Ignacio Malaxecheverría, Doctor en Filología Francesa, quien además hizo la traducción de las fuentes que componen esta obra.

La introducción logra cabalmente su objetivo, esto es, presentarnos la atmósfera, el contexto que envuelve a dichos seres. El autor profesa una gran pasión por la edad media, la cual se manifiesta en sus palabras y en los juicios plasmados. Esta misma pasión es lo que lo lleva a atacar y romper el viejo esquema paradigmático del "despreciable y oscuro" medievo. El autor, por otra parte, no se queda corto en erudición y respalda sus afirmaciones tanto en investigaciones propias como en otros trabajos del genero. Hace gran hincapié en el uso del psicoanálisis como una herramienta de interpretación simbólica, esto porque el bestiario medieval así como la gran mayoría -sino toda- de la literatura de la época está embebida de un enorme simbolismo.

El método utilizado por el auto para el desarrollo de la obra es según sus propias palabras
"Siguiendo a grandes rasgos el método junguiano, tal como se manifiesta aplicado en Métamorphoses, el que preconizo será analógico, y lo menos posible deductivo, pues deducción es tautología: lo deducido, B, está implícito en la premisa, A. La analogía exige el carácter interdisciplinario de la investigación.
Por eso, en cada sección del Bestiario, se presentarían en primer lugar los textos medievales pertinentes según el tema que se va a tratar; y a continuación, los datos que la historia de las religiones, la mitología comparada, la antropología, las artes plásticas o la alquimia puedan aportar para esclarecer,a su luz, la doctrina medieval. La lectura, como se ve, sería plural y subordinada fundamentalmente a la interpretación del psicoanálisis junguiano, lo que no significa intentar un alegato para la defensa de las tesis de Jung -empresa sin sentido hoy- o un dócil acatamiento y piadosa recitación de axiomas del maestro. Cada vez que Jung resulte excesivo en sus conclusiones, hay que abandonarlo. El pansexualismo de Freud, su obsesión por Edipo, dejó necesariamente huellas en las ideas de Jung. Defiendo, pues, un método y una visión general del mundo psíquico; pero de ningún modo acepto todas y cada una de las interpretaciones de Jung, especialmente cuando caen en la visión freudiana, centrada en un "imperialismo" de lo sexual o en la primacía de lo edípico.(pág. 38)"
La descripcion de las bestias está divida en 5 partes, los 4 primeros referidos a los 4 elementos básicos: Bestiario Telúrico(tierra), acuático(agua), aéreo(aire), ígneo(fuego) y el último relativo a Mostruos e híbridos. El bestiario telúrico contiene a elefante, tigre, castor, lince y topo, león, pantera, buitre, simios, ciervos y Lagarto. Veamos que nos dice del castor:

"(...)es un animal que posee un miembro que encierra una medicina, y al que cazan para apoderarse de tal miembro. Huye tan aprisa como puede; pero cuando ve que ya no puede escapar de la persecución, tiene miedo de que lo maten. Y sin embargo, posee por su propia naturaleza tanto juicio que sabe perfectamente que sólo lo persiguen a causa de aquel órgano: aferra, pues, tal miembro con los dientes, lo arranca y lo deja caer en medio del camino; y cuando el cazador lo encuentra, deja ir al castor, pues no se le caza más que por eso.(pág.84)"
El resto de los bestiarios contiene a:
  • Bestiario acuático: ballena, pelícano, delfín, cisne, ostra, rémora y serra.
  • Bestiario Aéreo: águila, grifo, grulla, tórtola y perdiz.
  • Bestiario ígneo: fénix y salamandra.
  • Monstruos e híbridos: sirenas, centauros, cordero de Escitia, bernacha, unicornio, onagro, catoblepas, basilisco, comadreja y víbora, aptalops, hormiga-léon, centicora, manticora y hiena, dragón, afisbena y áspid, hipopótamo, hidra y cocodrilo.
Finalmente el libro termina con imágenes del bestiario de Oxford en donde aparecen algunas de las bestias descritas en el libro.

Elefante-Bestiario Telúrico

En lo personal este libro me encantó, lo maravilloso de los relatos bestiáricos, así como la desarrollada introducción del autor dejan completamente satisfecho el espíritu, al geist, no sin un dejo de añorar infantilmente un regreso al pasado.

En definitiva un libro bellísimo. Totalmente recomendable ;).

Bestiario Medieval, Ignacio Malaxecheverría, Ediciones Siruela, 3ra. edición 2002, ISBN 84-7844-455-6.

miércoles, 9 de abril de 2008

Crear y demostrar versus copiar y pegar (Update)

Final feliz: Hoy miércoles entré al sitio donde estaba publicado el curso y me encuentro con que fue retirado, al parecer el mail tuvo el efecto deseado aunque no he recibido una respuesta formal ante lo sucedido. Si no entienden qué diablos quiero decir, lean los párrafos siguientes y así verán lo que ocurrió.

Hace unos días se armó una pelotera en el mmug debido a que X centro de capacitación ofrece un curso de formación técnica cuyo temario lo copiaron de TCI , el cual fue redactado por Rodrigo Duarte como coordinador académico de este centro. Este X centro de capacitación volvió a la carga con un nuevo temario, pero esta vez lo copiaron del sitio vivian.cl.

Ahora me tocó a mi.

Hace un tiempo redacté un manual de introducción a la computación para una capacitación que realicé para un cliente, luego de realizada la capacitación di acceso via este blog para descargar el pdf del manual con el objetivo de que lo usen interesados en aprender.

Comenzaron los problemas.

Revisando las estadísticas de visita a mi sitio, me dí cuenta que había una visita desde http://www.institutoblestgana.cl lo que me llamó la atención, fui al sitio y me encontré con una instalación de moodle en el cual se administran cursos que imparte este centro educacional. Uno de ellos es "Introducción a la computación". Cuando lo vi reconocí inmediatamente el temario así que revisé su contenido y me encontré con la grata sorpresa de que era el manual que yo había redactado, la verdad es que me molestó bastante no por el hecho de que lo usen, sino de que hagan negocio con el trabajo ajeno. Ese manual no lo hice una tarde de domingo mientras unas bellas mujeres me hacían masaje, no señores, ese manual lo redacté durante unas 3 semanas, después de que llegaba de clases (o sea desde las 12 de la noche) porque en el trabajo no tenía tiempo, en ese entonces trabajaba en Huechuraba de 8:30 a 17:45 y vivo en San Bernardo asi que imagínense a la horita que me levantaba.

Un centro que presta servicios educacionales debe tener personal calificado para la elaboración de las mallas curriculares y generación de contenido para los cursos, esto permite tener claro y controlado los objetivos que persigue el curso, y por cierto, dar un buen servicio "educacional". Utilizar el trabajo de otro, y más encima sin permiso, sólo genera desconfianzas y redunda en un mal desarrollo del curso por no tener claro de que se está hablando, y en esto tengo certezas, basta ver la "introducción" al curso.

Hace unos 15 minutos (son las 1:30 AM) les envíe un mail solicitando la baja del manual y las, obvias, disculpas respectivas.

Veamos que en termina esto.

martes, 8 de abril de 2008

Los trabajos y los días (PHP)

No es una reseña de la obra de Hesíodo, aunque se viene pronto (la verdad es que estoy atrasado con las reseñas de lectura :( ).
Una de las cosas que nunca he publicado aquí es código y la verdad es que he escrito bastante y algunas cosas bien simpáticas, como por ejemplo esta función PHP que les presento ahora:

<?
function contarDias($valorFecha){
$calendario=explode("-",$valorFecha);

/*Posiciones del arreglo:
$calendario[0]:año
$calendario[1]:mes
$calendario[2]:dia */

$diasDelMes=
date('t',mktime(0,0,0,$calendario[1],$calendario[2],$calendario[0]));
return $diasDelMes;
}
?>


La función contarDias() nos indica cuántos días tiene determinado mes, para los amigos de la consola en Linux esto lo podemos averiguar con CAL y el año o la fecha a saber, por ejemplo CAL 1983.
A esta función le pasamos la fecha en el formato AAAA-MM-DD, obteniendola ya sea a partir de una variable, un valor de una consulta SQL o simplemente escribiendo la fecha entre comillas (1983-03-15) y con explode() generamos un arreglo con los 3 elementos que forman la fecha a partir del guión separador. Luego usamos el parámetro 't' en la función date() y el segundo parámetro es construir una fecha "completa" o Unix timestamp para date usando con mktime(). Esto lo guardamos en la variable $diasDelMes y lo retornamos.

jueves, 3 de abril de 2008

Controlando la web: adios a la publicidad indeseada

Prolegómenos

Primero que nada partamos por aclarar ciertas cosas que no son conocidas por tod@s (y ojo que iremos como los cangrejos, de atrás pa’ delante). Cuando en nuestro navegador escribimos http://www.andrade.cl y le pedimos que abra dicho sitio, este, antes de hacer una petición HTTP y blablabla, debe encontrar el servidor de destino para dicha petición ¿cómo hacemos esto? Veamos....

DNS

Internet se sostiene actualmente en el Procotolo IP v4 y la forma en como nos "materializamos" en la red de redes es través de las direcciones IP. Actualmente una dirección IP está formada por un número compuesto por 4 grupos de números cuyo rango va de 0 a 255 (no viene al caso explicar numeración binaria ni hexadecimal, para eso hay harto que buscar, sobretodo aquí). Por ejemplo la dirección IP del servidor de Google.cl (uno de los que compone el cluster) es 64.233.169.99, todos los servidores que participan activamente en internet tienen una dirección IP asignada, el problema es ¿tenemos los humanos la capacidad de conocer y memorizar todos las direcciones IP o por lo menos de los sitios que regularmente visitamos? La verdad es que no. La humanidad siempre se ha caracterizado por ubicarse más por parámetros cualitativos que cuantitativos e Internet no es la excepción. Es por esto que para ubicar de una forma más simple los distintos servicios de internet existe algo llamado DNS (Domain Name System), los cuales realizan el servicio de asociar un nombre de dominio a una dirección IP lo que supone dos grandes ventajas, la primera es obviamente el de "enmascarar" una IP con un nombre nemotécnico (aunque he visto unos nombres de dominio...ufff que ni les cuento) y el segundo y de gran ayuda es que en caso de que la dirección IP cambie esto sólo se haga en el servidor DNS del dominio, así todos los usuarios seguiran usando el mismo nombre de dominio.

El archivo hosts

Hasta aquí todo bien, pero (siempre hay uno) ¿siempre existió el DNS?. La respuesta es no, antes de DNS había un sistema basado llamado HOSTS y que en terminos simples consistía en un archivo, el cual almacenaba el nombre del dominio y la dirección IP asociada. El formato es así:

Dirección IP Nombre de Host o dominio

127.0.0.1 localhost

Este archivo en los inicios de Internet almacenaba a todos los Hosts o Servidores que componían la red, pero, debido al explosivo crecimiento de la red, esto se hizo poco eficiente (la verdad es que muy deficiente) ya que este archivo debía ser modificado en cada una de las máquinas o sea una verdadera lata expresado en buen chileno. Esto llevó a la evolución plasmada en la centralización del servicio de resolución de nombres de dominio en los servidores DNS.

Sin embargo, este archivo no fue eliminado de las sistemas operativos y así ha permanecido hasta el día de hoy. Actualmente lo único que trae por defecto es la asocicación entre la dirección IP 127.0.0.1 y localhost que es nuestra maquina (por esto es que esa dirección IP se le denomine como loopback) La ubicación en los sistemas operativos más usados es:

Sistema Operativo - Ubicacion

Windows NT/2000 - C:\>Winnt\System32\drivers\etc\hosts

Windows XP-Vista - C:\>Windows\System32\drivers\etc\hosts

OS X y Linux - /etc/hosts

Retomemos el ejercicio inicial, cuando escribimos http://www.mmug.cl el navegador envia la orden a nuestro sistema operativo para que consulte primero donde está la dirección IP de nuestra querida comunidad. El sistema operativo primero consulta al archivo hosts, pero como mencionamos anteriormente este por defecto sólo trae la asociación a localhost con 127.0.0.1 por lo tanto, no servirá para dar respuesta a la consulta ¿cuál es la dirección IP del FQDN www.mmug.cl?, entonces es ahí que el sistema operativo consultará al DNS.

El truco

Ya pero uds. se preguntarán ¿dónde está el maldito truco?. Bueno para poder controlar la publicidad indeseada, pop-ups y todo lo que sea indeseable y detestable de la web lo podemos hacer por medio del archivo hosts. ¿Cómo? pues considerando todo lo explicado anteriormente, sobretodo el hecho de que siempre la consulta de un FQDN debe pasar primero por este humilde archivito, es que por cada sitio indeseado, crearemos una asociación en el archivo hosts (editandolo con cualquier editor de texto plano, vi o block de notas basta) apuntando a la dirección IP 127.0.0.1(nuestra máquina), el símbolo # sirve para comentar líneas para que el sistema operativo no las interprete. Un ejemplo sería más o menos así:

#Direccion IP Nombre de Host o dominio

127.0.0.1 localhost

127.0.0.1 sitioindeseado.com

127.0.0.1 publicidadodiosa.cl

Luego reiniciamos nuestros servicios de resolucion de nombres con los siguientes comandos según el sistema operativo: ipconfig/flushdns y luego ipconfig/registerdns en el caso de Windows, con /etc/init.d/named restart (linux basados en Red Hat) y /etc/init.d/bind restart (linux basado en debian)

Y listo entonces cuando abramos algún sitio que contenga publicidad o contenido no deseado (a través de frames o iframes o pop-ups) y que estén registrados en nuestro archivo hosts estos no se cargaran. Si hay problemas con algun sitio o este ya dejó de ofrecer contenido molestoso, simplemente lo borramos o mejor aún lo comentamos con #.Ven que es sencillo. ;)

Hay muchas extensiones para navegadores basados en Mozilla que resuelven este problema (busquen aquí), sin embargo este truco permite controlar el contenido para cualquier aplicación, tanto a navegadores que no sean Mozilla como aplicaciones de mensajería que muestre contenido desde internet. Por ejemplo, así eliminé la publicidad de Windows Live Messenger, basta con averiguar cuál es el origen de dicha publicidad , agregamos el dominio en el archivo hosts y listo. Esta es una forma sencilla, accesible para todos y efectiva.