jueves, 8 de noviembre de 2007

/fox pro en dos monousuario -> red



Es lo que hay valor, eso me tocó en el trabajo. No estoy acostumbrada a trabajar con tablas .dbf, estoy acostumbrada a manejar la concurrencia mediante transacciones. Pero a lo hecho pecho.

Primera estrategia, usar una tabla 'candando', que se llama 'candado.dbf', su única misión es actuar de semáforo para gestionar los accesos concurrentes las tablas. No se bloquean las tablas a acceder, sino el 'candado'.
Ventajas: no atosigar tanto las otras tablas, dar velocidad de consulta.
Desventajas: puede hacerse por fuera de la aplicación, pero las probabilidades que suceda son bajas.

Importante, poner SET EXCLUSIVE OFF en el config.fp o en un archivo del proyecto.
Estos fueron los mayores cambios:
1.- Ruta de Archivos (Prg Bases de Datos y tablas)
--- Set Default to
--- Set Path to
2.- Quitar la Exclusividad de la Base de Datos
--- Set Exclusive Off


PROCEDURE CANDADO_ON
UNLOCK ALL && Por seguridad
IF !USED("CANDADO")
USE CANDADO IN 0
ENDIF

PRIVATE XSR
XSR=SET("REPROCESS")
SET REPROCESS TO 1
DO WHILE !FLOCK("CANDADO")
DO CINFORME WITH "Los archivos est n en uso...\n\n"+;
"Toque ENTER para reintentar ya, o espere a que esta "+;
"ventana se vaya y reintente sola.",2
ENDDO
SET REPROCESS TO (XSR)


PROCEDURE CANDADO_OFF
UNLOCK ALL


Uso:
=candado_on() && en realidad bloque la tabla 'candado.dbf'
insert/append
= candado_off()

No puede usarse con el comando ZAP (vaciar tabla) ya que exige abrir la misma en modo exclusivo, y la tabla queda para ser accedida en forma exclusiva y no pueda compartirse, aun cuando SET EXLUSIVE = OFF. Por lo tanto no libera al usuario de ese recurso, y si algun usuario intenta acceder a la tabla 'zapeada', sale el siguiente mensaje: "File access denied"

Generalmente estas tablas eran usadas para información de reportes, por lo cual opté por crear tablas locales a cada terminal para ahorrarme este problema.
Estas tablas se cargan mediante el resultado de una sentencia SQL (hay un borrado implícito: el resultado de la consula, evitamos usar ZAP).

Hasta la versión 7 de FoxPro no salieron los cursores READWRITE los cuales me hubieran evitado usar tablas, que no son temporales, pero sí locales.
En teoría para FoxPro 2.5 DOS los cursores pueden escribirse/borrarse/indexarse, de hecho lo usé, y me anduvo en modo monousuario pero no se porqué tuve problemas al hacerlo en concurrencia. Concretamente al indexar, mensaje de error: "a read-only file"

No tengo tiempo de investigar el motivo, ni mucho menos me motiva hacerlo en FoxPro, decidí cambiarlo por tablas y se solucionó.

De momento ni siquiera la ORT ha montado la red para probar lo que estoy haciendo, ergo, la forma de testearlo es llamando la aplicación dos v
eces. Y para probar el ruteo de los archivos (hacia el supuesto servidor) ubiqué los ejecutables en diferentes carpetas.
Los ejecutables son los mismos para cada terminal (servidor y cliente), lo que varía es el archivo de configuración Config.fp en cada máquina.
Al menos algunos problemas de concurrencia han salido a la luz probándolo de esta forma, pero está lejos de lo óptimo como testeo.
Aqui el resultado de la misma aplicación llamada desde diferentes lados:







miércoles, 7 de noviembre de 2007

/sigo sonando embed html suena mal bla bla



Sigo investigando en el desarrollo web, campo poco explorado por mi hasta ahora. Dadas las exigencias comencé con PHP (aunque estoy aprendiendo RoR también), MySql e instalado un servidor Apache (versión 2.26) bajo Windows XP. Para instalar todo el paquete y desentenderme de las configuraciones usé xampp (instalación muy sencilla e intuitiva).

Requerimientos laborales me llevan a estas opciones sin que descarte otras a futuro.

Paso 1- Instalar servidor
Xampp no está pensado para instalarlo para producción, su fin es crear un ambiente de desarrollo para desarrolladores y nada más.
Lista de aspectos de seguridad que faltan:

  • El administrador MySQL (root) no tiene password.
  • MySQL daemon acesible vía red.
  • PhpMyAdmin s acesible vía red.
  • Ejemplos acesibles íia red.
  • Los usuarios de Mercury y FileZilla son conocidos.

(Todo esto es configurable ejecutando 'XAMPP Security console', lo que permite asignar las passwords necesarias que le dan más seguridad al servidor, pero por defecto no es asi)

Paso 2:
Creé un html, por ahora no estoy haciendo nada en PHP, y me dispuse a probar sonido con una etiqueta propietaria como bgsound, ya que sólo funciona para IE y Opera.
Usé
<embed src = "tema.mp3" autostart = true loop = true > </embed>

autostart = true, para que el sonido comience al cargar la página.
loop = true, el sonido se reitera hasta que se sale de la página.

Problema: solo podía oir entrecortado e ignora al loop infinito.
O'Reilly explica que puede haber problemas con algunos navegadores y esta etiqueta ya que no es compatible con los estandares HTML, pruebo con <object>
Lo único que cambió en IE es que respeta el loop, pero se sigue escuchando entrecortado.

<object >
<param name="src" value="tema.mp3">
<param name="autoplay" value="true">

<embed src="tema.mp3" autostart="true" loop="false></embed>

No se si es un falla de Apache con windows, que dicen no es tan eficiente como lo es bajo Linux, en httpd.conf tengo los MIME configurados para que acepte MP3:
<if Module mime_module > bajo este tag agrego:
AddType audio/mpeg mp3 MP3

Además me pasaba algo similar con el formato WAV.

De paso menciono que para realizar la conversión mp3 -> wav, utilicé este conversor online, bastante efectivo: media-convert (quería ahorrarme la instalación/desinstalación de utilitarios que rara vez usaría)

He realizado la pregunta en foros y las respuestas son variopintas, sin nada concreto.
Si alguno sabe, you all are welcome.





jueves, 1 de noviembre de 2007

/sublime









/autorretratos animados




Es la primera exhibición online de Australian National Portrait Gallery, tema: autorretrato en versión animada, puede ser un cuelgue, sin embargo, disfrutables, personalmente extrañé un poco los detalles geeky.





/crisis del subdesarrollo



(click sobre la imágen para agrandar)







/alternativas gratuitas a Nero



En ratillo se describen con mas detalles las mismas (exactamente 10), la lista está pensada básicamente para Windows XP, pero es una opción interesante. Personalmente estoy subutilizando al Nero, y cada vez trae mas cosas que sólo me ocupan lugar y me oscurecen su operación. Estos utilitarios son para usos mas específicos, pero efectivos en lo suyo.





/Excel 2007 no sabe multiplicar (bugo)



El primer ejemplo que se reportó es que 850*77.1 = 100000 en lugar de 65535, parece que cualquier fórmula que de como resultado 65535 actúa de forma errática.
La explicación de cómo funcionan las cosas en Joel on Software (inglés).


vía slashdot





/clientes de email para USB





A pesar de la independencia que dan los servicios webmail como Gmail y Hotmail respecto a los clientes desktop, algunos optan por los últimos por cuestiones de seguridad.
Actualmente hay unos cuantos que pueden llevarse donde sea en un USB, y usualmente no requieren instalación, plug&play mood, y listo.

Los 5 mejores:

Reach-a-Mail simple de usar (disponible en español, freeware)
Koma-Mail simple, con énfasis en la seguridad (disponible en español, freeware)
KooMail interesantes features, como carpetas virtuales (versión de prueba)
Surfulater diseñado para almacenar páginas web, pero incluye email (versión de prueba)
Portable Office Exec conjunto de herramientas ofimáticas, incluye cliente de email