lunes, 30 de abril de 2007

they know, Google Trends

Podemos saber los que los usuarios de GTalk están escuchando, al menos en el momento que chequeé debo decir que me sentí más identificada con los sonidos que venían desde Brasil y Australia, y que los USA google talk users had a terrible taste in music.

Sería bueno hacer un grafo por países y/o géneros o artistas, para ver cuáles se repiten de un pais a otro....y luego pasarlo a web...y luego coquetear con NetArt.

Web 2.0 ..casi orwelliano

Many Eyes es una herramienta interesante para la visualización de información de manera gráfica. La idea es que mediante los patrones visuales hallados los interpolemos a una realidad social dada (desde las edades de los fundadores de las tech startups, o una red basada en las respuestas emocionales a los colores, por ejemplo) para su posterior análisis.

El objetivo es democratizar la visualización (los datos se comparten) y motivar un nuevo tipo de análisis social mediante la comunicación e investigación ciudadana a partir de datos públicos.

Estos datos podemos proveerlos desde una simple planilla Excel, o un archivo .txt para transformarlos en imagen, y dejarlo a disposición de otros usarios.
Podemos incluir en nuestro sitio aquellos gráficos que nos interesen, ya que da el código HTML necesario para hacerlo.
La idea original era de visual lab de IBM : tomar la imagen como una forma de análisis de la realidad mediante patrones. (Me fue inevitable pensar en la analogía de lo que los fractales son a las ciencia exactas).

En pleno auge del poder de la imagen, quizás sea una forma efectiva de entender el valor de ciertos números que deberían asustar, pero que dichos desde la emoción sorda de un burócrata no 'dicen' demasiado por el efecto del aburrimiento. Concientización, digamos.

Pensaba con qué datos probar Many Eyes...y todo lo que se me ocurre es medio creepy.

vía infosthetics

domingo, 29 de abril de 2007

Si te descubrió Microsoft

Y te aparece una ventana así:


Bueno, no desesperes, hay dos formas de suprimirla: una manual y otra automática como bien resume maguila.
No solo indica como hacerlo sino las precauciones a considerar a futuro, como por ejemplo quitar el update automático.

Inicio-> Panel de Control -> ícono de Actualizaciones automáticas:



Cuando clickean en él aparecerá la siguiente ventana:


Por defecto está seleccionado en 'Atutomático (recomendado)', en mi caso elegí descargar las aplicaciones y decidir cual instalar.

No quiero entrar de momento en lo ético o no de tener una copia pirata, o lo ilegal o no del procedimiento que elimina esa molesta ventana. Microsoft y su monopolio fomentan indirectamente la piratería, y creo que en definitiva formó parte de su estrategia de expansión.

Hacía tiempo quería escribir un manual sobre este tema, porque por incauta
meses atrás debí aplicarlo (y funciona), pero la pereza por la cantidad de pasos y otras ocupaciones lo fueron postergando. Felizmente, hay quien lo hizo muy bien.

Via maguila

Acceso a servidores ftp

Algunas veces es necesario acceder a una dirección ftp desde un lugar que tiene este protocolo bloqueado. Generalmente las Webftp solucionan este problema, ya que permiten usar http para administrar archivos remotos.

Relay, the ajax directory manager es una herramienta de código abierto que permite, desde nuestro servidor acceder a datos remotos usando Ajax 100% : arrastra archivos y carpetas, incluirlos dentro de una carpeta para posterior descarga, visualizar las imagenes con sus propiedades, enviar por email los documentos, barra de progreso para el upload, crear directorios, administra múltiples usuarios, es decir, modus operandi windows 100% también.

Está en su versión beta, y pesa 292 Kb.

Requerimientos mínimos:
  • PHP version 4+
  • MySQL version 4+
  • Perl 5.8.0 (para mostrar el progreso de carga)
  • Apache/IIS

Aqui hay una demostración.

Via wwwhat's new


mas botellas al mar

Aprovechando este sábado con pocas ganas de estudiar y algo depresiva, dediqué a seguir 'mejorando' el blog, cosa que comencé ayer con el agregado de un formulario.

Para continuar habilité un servicio de suscripciones. Para los blogs existe Feedburner gratuito (no se cual servicio existirá para sitios webs) cubre la mayoría de los servidores de blogs conocidos: blogger, wordpress, my spaces, etc. Tiene varias prestaciones interesantes a elección: agregar feeds, agregar estadísticas, analizar tráfico del blog, contadores, hacer ping a varios indexadores, y suscripciones vía mail, entre otros que aun no tuve tiempo de mirar.
Es suficiente un e-mail para registrarse e inmediatamente habilitan el uso de los servicios.
Es una forma más de difundir el contenido del blog vía RSS o bien agregándolo a navegadores como Google o Yahoo (verán los iconitos), o enviándolo vía mail.
Para cada una de las prestaciones que elijan les provee de un código en javascript y HTML que se agrega al blog.

Reitero, en blogger: Panel-> Herramientas->Diseño->agregar elemento -> Javascript/HTML.

Es poco lo que puedo decir sobre los feeds, pero algunos como RSS y Atom son parte de la familia de los formatos XML desarrollados específicamente para sitios que se actualizan con frecuencia y por medio del cual se puede difundir su contenido en otros sitios webs o programas (conocido como redifusión o sindicación).
Este formato permite dar a conocer el contenido sin necesidad de acceder al sitio. Lo que es una gran ventaja si tenemos mas de 10 sitios de los cuales necesitamos/queremos estar actualizados. En un solo lugar concentramos todos los feeds.
En Firefox tengo varios feeds agregados, y debo decir que es una gran ventaja concentrarlos en mi navegador evitando buscar en 'Favoritos' para acceder al contenido actualizado de los sitios que me interesan.

Podemos leer los feeds mediante la instalación de un software lector, por ejemplo: puede ser Feedreader (gratuito), FeedDemon o RssReader (gratuito).
O bien pueden leerse vía web desde Bloglines , Newsgator o GoogleReader , para este último es necesaria una cuenta en Google (Gmail), y a diferencia de los anteriores saca provecho de la tecnología AJAX por lo cual puede hacerlo algo mas vistoso pero no mas eficiente.

Este post bien podría ir de la mano de este que hice hace poco tiempo atrás.




sábado, 28 de abril de 2007

Descargar software gratis sin licencia

Esa es la iniciativa de giveawayoftheday (también en español), la idea es presentar día a día software comercial completamente funcional (sin limitaciones como sucede con las versiones de prueba) el cual se descarga de manera gratuita y sin problemas de licencia. El tiempo que el software está disponible depende del propietario del mismo.
Claro, esto tiene algunas restricciones importantes: no puede usarse con fines comerciales, ni brindan soporte.

No pude dejar de preguntarme cuáles son las ventajas con respecto al pirateo, ya que desde el punto de vista legal estoy en las mismas circunstancias, no puedo usarlo comercialmente, ni tengo soporte.
Su mayor utilidad está en que sirve para conocer programas de primera mano, que lo obtenemos desde un sitio confiable,
prescindiendo de los clientes P2P, sin crackeos mediante, y además podemos cotejar la opinión desinteresada de usuarios.
¿Por qué creo que es desinteresada?, porque no hubo que pagar por el, y porque de su evaluación dependerá la venta, porque tampoco tuvimos que invertir tiempo crackeando y buscando el software en eMule o en algun sitio Torrent, que de por si puede incrementar nuestra animosidad hacia los potenciales problemas que tenga el software. Creo que de ese modo, dejandolo disponible sin restricciones el ánimo de evaluación es diferente, mas despojada de prejuicios.

Otro hecho destacable es que el sitio opera como tarjeta de presentación de muchos desarrolladores y sus productos, asi como de 'testeo' por parte de los usuarios.

Crear iconos para nuestro e-mail

(Actualizado)

Encuentro particularmente estéticos esos botoncitos que parecen casi íconos que se usan para sindicaciones, direcciones de e-mails, servicios web, etc.
Navegando encontré varios sitios que ofrecen como crearlos.

Generar íconos para e-mail

Gmail, Hotmail, Yahoo..(empresas conocidas)

http://services.nexodyne.com/email/
http://www.correoiconos.com/
http://safemail.justlikeed.net/
http://www.needasig.com/
http://www.hidetext.net/index.php


Gmail, Hotmail, Yahoo..y de empresas no conocidas

http://www.mailonpix.com/
http://chxo.com/labelgen/


Gmail

Estos servicios solo proporcionan la imágen para ser subida al servidor.
http://www.email-x.net/gmailsig/gmail-signature.php
http://www.sr-ultimate.com/gmail-signature/


Salvo los dos últimos servicios, los anteriores proporcionan un código HTML para ser insertado en el sitio.
Este sistema tiene ventajas frente a los robots de spam, la imagen con nuestro correo solo despliega nuestro e-mail, pero no está asociado a ningun cliente de correo electrónico. Quien desee mandar un mail, deberá tomarse la molestia de digitar nuestro correo electrónico.
De todos modos me pregunto si esos sitios al tener nuestro correo, no pueden dar nuestro email para spam, después de un tiempo podré decirlo.

Por otra parte personalmente no pude aguantarme y puse momentáneamente uno de los íconos asociado a un cliente de correo-e. Tengo 2 correos, uno en hotmail (que asocié al cliente) y otro en Gmail (solo despliega el correo).
Supongo que debe ser un bug1, pero cada vez que el cursor está sobre el ícono de Gmail y clickeo, se abre el cliente en la cuenta de Hotmail. Lo que no debería pasar.

Código para asociar un cliente de correo a un ícono (o ícono seteado como dice mi hermana):

<a href="mailto:tallerdeldisparate@hotmail.com"/><img src="image.png"/>

image.png, es el archivo asociado a la imágen.

Modo en que inserté las imágenes: Plantilla->Agregar elemento-> Aregar Javascript/HTML, copié el código proporcionado.

Otro bug2 o desconocimiento, es que intenté insertar el código usando el editor HTML de la plantilla, no di con el lugar adecuado. Si bien lo inserta, el ícono que tenía el cliente de correo asociado no responde, o sea, no llama al Outlook, Thunderbird por ejemplo. Seguramente es mi desconocimiento del manejo de las nuevas plantillas de blogger.




tirando una botella al mar

En este sábado he decidido ir aplicando de a poco, y a medida que aprendo, lo que navegando encuentro por ahí o me llegan de otros sitios. Creo que no solo sirve para aprender, enriquecer nuestros sitios, sino además conocer los diferentes recursos posibles y por donde debemos buscarlos.

Encontré una forma de agregar un formulario a mi web sin necesidad de grandes conocimientos de HtML. El servicio se llama FormLogix es gratuito, no es necesario saber programar, y permite crear formularios para la web, formularios para guardar info en nuestra base de datos, para e-mails, polls, etc.
Pueden tomar plantillas predeterminadas para
modificarlas o crear la propia mediante una interfaz bastante intuitiva.

Luego de guardar el formulario solo resta publicarlo, que lo que hace es crear código javascript para ser copiado y posterirmente agregado a nuestro sitio.

Desde blogger: Panel -> Plantilla -> Diseño-> Argregar elemento ->Javascript y pegamos el código generado. Voilá, estamos en contacto.

Esto puede ser util para evitar poner nues
tro mail en la web, ya que la configuración del formulario permite indicar el e-mail a donde nos llegarán los datos enviados.


Vía Xyberneticos.com

viernes, 27 de abril de 2007

¿Preparados para Windows Vista?

Mirando un sitio del que suelo extraer varias cosas CNet , vi un test de hardware y software para determinar si nuestra computadora está preparada para la instalación de Windows Vista. El test requiere de un Active X en Java que es descargado desde el mismo sitio (por lo tanto, confiable), asi que si quieren probar solo acepten la opción 'Instalar'.

En mi caso, salvo la tarjeta de video (
NVidia Geforce4 MX), todo lo demás pasó el test, carezco de la memoria de video suficiente y de la tecnología Pixel Shader. Resultado de la tarjeta:

Video RAM: Required - 64 MB or better , You have - 32.0 MB
Video Card 3D Acceleration: Required - Yes , You have - Yes
Pixel Shader Ver.: Required - 2.0 , You have - 0.0

El Pixel Shader sirve para procesar el ambiente asociado con superficies, y con materiales que se supone deben tener un aspecto realista. NVidia GEforce4 MX carece de Pixel Shader (tecnología que sirve para procesar el ambiente asociado con superficies, y con materiales que se supone deben tener un aspecto realista. Permite reconocer mas texturas, y mayor cantidad de operaciones por textura).

Aqui hay un compendio de los requisitos necesarios para instalar Windows Vista.

sábado, 14 de abril de 2007

Intentando aprender manejo de bitmap III - Pixels por mm (en delphi)

(Actualizado)

Después de mucho andar finalmente resolví el problema como lo hacía originalmente, ya que aparentemente la información contenida en un archivo de tipo bitmap, no tiene los datos necesarios. Conclusión: hay que crear como sea una escala para calcular la relación pixels por mm.


  1. marcar 3 puntos en la imagen digitalizada p1, p2, p3 de modo que formen un ángulo recto. p1p2 es un segmento paralelo al eje Ox y p2p3 al eje Oy (así obtengo la escala en X y en Y, esto es porque la densidad de pixeles no tiene porque coincidir para ambos ejes).

  2. Ingreso la distancia real en mm entre p1p2 y p2p3 (p2 vértice).

  3. Calculo la distancia de esos segmentos en pixels, y como la distancia equivalente en mm es conocida por mi (fue ingresada) obtengo un factor en X y factor en Y, que son las escalas para cada eje.

  4. A cada coordenada del punto (X,Y) las multiplico por el factor en X y en Y para obtener el equivalente en mm de las mismas. Luego todos los cálculos arrojan como resultados valores en mm.


Asi funciona correctamente, medidas de ángulos, rectas, distancias, proyecciones, etc.
Pero tenía una duda, ya que para cada imagen debo guardar esas escalas, temía que éstas cambiaran al cambiar la resolución, y por lo tanto no bastaran por si sólo eso datos, sino que ademas tendría que guardar la resolución a la que se calcularon los factores, y no es así.

Mi imagen es un bitmap que está dentro de un objeto de TImage, y tanto el bitmap, y el objeto imagen (de TImage), quedan con sus propiedades Width y Height constantes independientemente de la resolución de pantalla. Por lo tanto los factores en X e Y tampoco cambian.
Esto se debe a tres cosas:


  1. El bitmap contiene información sobre sus dimensiones, y son las que serán usadas para representarlo o mostrarlo. Lo que si sucede es que al adaptar el bitmap a las diferentes resoluciones, este se distorcione levemente. Si la propiedad Align := alNone para el bitmap, entonces no modifica sus dimensiones originales para adaptarlo a algun contenedor. En caso contrario, las dimensiones se alteran, pero como las guarda se respetan independientemente de la resolución.

  2. La información en tiempo de diseño del form y los componentes contenidos en el están en el archivo .dfm (y luego se respetan, cualquiera sea la resolución). Esto último lo verifiqué abriendo el archivo .dfm correspondiente con el Notepad. (Válido si Align := alNone)

  3. Si el TImage y el TBitmap tienen su propiedad Align := alClient tampoco cambia la escala, ya que tanto el Height como el Width de la imagen como del bitmap, se modificaran en un factor constante en X y en Y, lo que hace que las diferencias entre dos puntos en X y en Y no se vean alteradas.(Aunque en ese caso tanto el TImage, como el TBitmap, sí intentarán acomodarse al objeto contenedor. TImage a un TForm y TBitmap al TImage).

En resumen, con la propiedad Align := alClient de los componentes, sí se modifican sus respectivas propiedades Width y el Height, aunque no se modifica la distancia en pixeles entre 2 puntos sobre los ejes (x e Y) porque ambos fueron multiplicados por el mismo factor. Cuando Align := alNone, las mismas propiedades mencionadas permanecen incambiables, ya se porque el bitmap conserva las originales y/o el TImage.

Observé la variable Screen.PixelsPerInch del form que contiene el TImage, y sin embargo su valor cambia al modificar la resolución, pero los componentes contenidos en el form no cambiarán sus dimensiones.

El código es muy sencillo, simplemente aplicar lo que dije:

Procedimiento de un controlador que calcula la escala.
Procedure TCalcHandler.calcEscala(P1:TPuntoVisual;P2:TPuntoVisual; P3:TPuntoVisual);
Begin
if ((P1 = nil) or (P2 = nil) or (P3 = nil)) then
ShowMessage('Faltan parámetros para calcular la distancia')
else
begin

// Puntos iguales

if ((P1 = P2) or (P1 = P3) or (P2 = P3)) then
ShowMessage('Hay puntos que coinciden,
la distancia es cero, no hay escala')
else
begin
imgHdl := fact.getInstanceImgHndl;

// setea imgHdl.FactorX y imgHdl.FactorY
imgHdl.setEscala(P1,P2,P3);
end;
end;
End;


p2 es el vértice del ángulo recto.
distXmm, distYmm, DistPixels son todas propiedades del controlador TImgHandler.
distXmm: distancia en mm segun OX conocida en la imagen sin digitalizar.
distYmm: idem segun Oy.

Inicializa los valores de la escala.
Procedure TImgHandler.setEscala(p1,p2,p3:TPuntoVisual);
Begin
// p1,p2 forman sentido del eje Ox
// p2,p3 forman sentido del eje Oy

distEnPixels(p1,p2);

// relacion entre mm/pixel

FactorX := self.distXmm/DistPixels;
distEnPixels(p2,p3);

FactorY := self.distYmm/DistPixels;
End;




Function TImgHandler.distEnPixels(p1,p2:DTPunto):double;
Var
distP1P2:TDistanciaP1P2;
Begin
distP1P2 := TDistanciaP1P2V.Create(p1,p2);
distP1P2.Calcular;

DistPixels := distP1P2.Distancia;

distEnPixels := DistPixels
End;



Function TDistanciaP1P2V.Calcular:Integer;
Var
deltaX,deltaY:Double;
Begin

//P1, P2 ya fueron pasados al crear el objeto

deltaX := P2.X - P1.X;
deltaY := P2.Y - P1.Y;

Calcular := Sqrt(sqr(deltaX) + sqr(deltaY));
End;

Instalando GLScene - conflicto con los componentes Jedi



Como he dicho estoy por meterme en el mundo 3D y toda la matemática asociada a los gráficos para iniciar varios proyectos, y porque puede serme de ayuda en uno que estoy encarando actualmente. Nunca entiendo porqué es tan complejo instalar paquetes de componentes open source para Delphi (o en general), hay que recompilar aca, quitar versiones previas tocando manualmente el registro de Windows, agregar directorios a las configuraciones del IDE, en resumen todo manual. Claro, lo es complicado para mi, y quizas deba colaborar con esos proyectos open source creando una herramienta que automatice las tareas, en vez de quejarme. De momento, la única forma de colaborar es resumiendo mis pasos por si a alguien le sirve.
Uno de los mayores problemas que encuentro, es que por lo general la información de instalación o bien es lacónica, lo que presta a confusiones, o sino está diseminada entre varios tópicos, archivos readme, las FAQ, etc lo que hace que obtener la información necesaria nos insuma mas rato de lectura que el conveniente.

Instalación de GLScene

La instalación se hizo bajo Delphi 7 Enterprise Edition.

  1. Descargar el paquete de GlScene
  2. Descomprimir el paquete en una carpeta (recomiendan C:\Archivos de programa\Borland\Delphi7\Projects)
  3. IDE de Delphi
  4. Asegurarnos que la carpeta donde se encuentra GLScene está en las Libraries Path (Tools - Enviroment Options -> Library Path)
  5. Install New Component GLScene7.dpk (Components -> Install Component)
  6. Compilar y posteriormente Build
  7. Repetir 4 si desea instalarse los paquetes GLSS_FMOD7.dpk, GLSS_FMOD7.dpk, GLSS_BASS7, GLS_SDL7
  8. Instalar Paquete Components ->Install Package (verificar que se encuentre seteado el paquete de GLScene)
Hasta ahí todo bien, siempre y cuando, no tengan los componentes multimedia Jedi instalados. En ese caso cada vez que deseen instalar los componentes GLScene aparecerá un molesto mensaje de error:
"Cannot load package 'JvMMD7R'. It contains unit 'VFW,'which is also contained in package 'GLScene7'.

Causa: GLScene y JVLC usan la misma librería vfw.pas aunque ubicadas en diferentes carpetas. Ese archivo es utilizado por el paquete multimedia de las JVCL. Esta librería es la Video for Windows API translation (traducción Api de Windows para video), debería estar en and \common dentro de las Jvcl.

Solución(es):
Eso me llevó al sitio de GLScene, readme, foros, etc, y encontré algunas respuestas.

  1. Una del foro del Club Delphi , la cual no apliqué.
  2. Las otras estaban dentro de las FAQ de Jedi, sugiere o bien agregar el paquete de GLScene al nodo de 'requeridos' del paquete de JVMMD7R, o a agregar JvMMD7R al nodo de 'requeridos' de GLSscene, y quitar vfw.pas del nodo de contenidos de GLScene o de JvMMD7R, segun cual paquete se haya modificado (en mi caso GLScene).
  3. Reconstruir los paquetes.
Opté la 2, quizás la 1 hubiera sido mas radical y me hubiera permitido tener ambos componentes instalados de manera completa, pero temía por las dependencias de carpetas entre unos y otros. Además, tengo escasa probabilidades de usar los componentes multimedia de Jedi contando con los de GLScene.
Instalé los componentes de GLScene sin problemas, sin embargo los conflictos con los componentes Jedi volvieron cuando decidí instalar los paquetes restantes.
En resumen, si instalan sólo GLScene7.dpk, con la solución que detallé basta y funci
ona correctamente.

Excepciones de la solución:
Conflictos con componetes Jedi cuando decidí instalar los siguientes paquetes de GLScene:
  • GLS_ODE7.dpk - para aplicaciones de la física
  • GLS_SLD7.dpk - para el manejo de SDL
  • GLSS_FMOD7.dpk, GLSS_BASS7.dpk - manejo de sonido en 3D
Solución a mi problema:

  1. Desinstalar el paquete de las librerías multimedia de las Jedi. Components -> Install Package -> Jedi Multimedia -> Remove
  2. Reinstalar las GLScene y los paquetes mencionados.
  3. Por ensayo y error, mas algo de navegación en Google, supe que que los siguientes path deben estar en library path:
    \Source\CgShaders - GLCgShader.pas
    \Source\SoundAPIs - FMod.pas, Bass.Pas
    \Source\PhysicsAPIs - Odegl.pas

    \Source\GameAPIs - SDLWindow.pas
    Los archivos en rojo son los que deben estar al momento de instalar los paquetes (Components->Install Component) mencionados, los mismos van en el cuadro de la Unit Name (son los .pas correspondientes), si ponen el archivo incorrecto genera conflictos.
  4. Para instalar GLSS_FMOD7 y GLSS_BASS7 deben copiarse los archivos fmod.dll y bass.dll de \Source\SoundAPIs en Windows\System32
  5. Para instalar GLS_SLD7 de copiar el archivo sld.dll de \Source\GameAPIs en Windows\System32
  6. Para GLS_ODE7 copiar ode.dll de \Source\GameAPIs en Windows\System32

De este modo, previa eliminación de los componentes multimedia de las Jedi, quedaron instalados los paquetes de GLScene en el IDE de Delphi.
En este post intenté resumir las diferentes variantes de instalación de GLScene, hay varias opciones segun los conflictos que se planteen, y según los componentes de GLScene que deseamos instalar.



Notas
Remover paquetes: Components ->Install Packages -> Marcar -> Remove




Library Path (Tools ->Environment Options)


















Instalar Componente Components->Install Component (ver unit name ..para GLSS_FMOD, GLSS_BASS)















[off topic] insertar imágenes en blogger me resulta muy complicado,
el drag an drop no siempre funciona, y leer el html también también tiene sus vueltas, hay que ver donde se insertan los tags sino la plantilla no se resuelve correctamente.
Disculpen la desproligidad de las últimas imagenes.