Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarBorrar ficheros temporales automáticamente

Autor: S3rGy0 | Archivado en: ASP el día 18/Nov/2005

Seguro que alguna vez habéis tenido que trabajar usando ficheros de uso temporal ó registros de base de datos que dependen de una fecha y cuando esta caduca, quedan inservibles y hay que eliminarlos de la tabla correspondiente.

Para el primer caso se suele solucionar fácilmente usando el objeto MemoryStream en lugar de un FileStream, pero a mi me ha pasado ya varias veces que, en determinados casos, no me sirve el MemoryStream. También recuerdo el caso en el que tenía que mandar ficheros a un recurso compartido, dejarlos allí por dos semanas para que lo usaran los usuarios y pasado ese tiempo borrarlos.

Para el segundo caso se soluciona usando un DTS. A mi particularmente no me gustan los DTS porque cada vez que tiene algún problema el servidor y hay que reiniciarlo, indefectiblemente fallan los DTS… sí, sí, les tengo manía.

Está claro que siempre hay más de una solución para un mismo problema pues os voy a presentar una alternativa, que además de ser muy sencilla, es realmente efectiva: utilizar los eventos del Global.asax para eliminar datos temporales de manera automática y sin la intervención de DTS, ni scripts que borren ficheros: En los eventos Session_End y Application_Start se coloca el codigo necesario para borrar los ficheros o registros de base de datos que queramos. En el ejemplo que puse anteriormente lo que hacía era borrar todos los ficheros contenidos en un directorio cuya fecha de creación fuera superior a 2 semanas.

La explicación es muy sencilla, cada vez que finaliza la sesión de un usuario en el servidor web, se comprueba si hay algún fichero o registro que cumpla las condiciones que hemos especificado en código para que sean eliminados. Este codigo se incluye también al comienzo de la aplicación porque si el servidor fuera reiniciado se perderían las sesiones actuales, con lo que al volver a iniciarse la aplicación realizaría otra vez la comprobación. Esto último no es estrictamente necesario, ya que en el momento en el que pierda otro usuario la sesion se realizará otra vez el escaneo, pero a mi me deja más tranquilo.

S3rGy0.


| 3 Comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarTraza Privada

Autor: S3rGy0 | Archivado en: General el día 14/Oct/2005

No a la traza privada sin control judicial Desde CiberPunk nos cuentan que el pasado 15 de abril se ha aprobó por Decreto de Ley un reglamento por el cual un agente, sin autorización ni tutela judicial puede trazar las comunicaciones electronicas de cualquier usuario.

Esto es, obviamente, una flagrante violación de la intidad del usuario, por lo tanto se está llevando a cabo una campaña de protesta desde esta página, junto con la AI, para que se impugne este Decreto. Por lo pronto, el Tribunal Supremo a admitido a tramite la impugnación que ha presentado la AI, además de la queja que van a presentar desde CiberPunk ante el Defensor del Pueblo. Si queréis participar en ésta, podéis dejar vuestra firma en este formulario.

Esto demuestra una vez más que al Gobierno no le importa lo más mínimo utilizar la Constitución como papel higiénico, con tal de que las discográficas, honorables protectoras del orden y la moral, puedan echarle el guante a esos acérrimos enemigos de la patria que son los usuarios p2p. Aunque claro, esto sólo sería una de las utilidades que tendría este “versatil reglamento”…

S3rGy0.


| Sin comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarFirefox Preloader

Autor: S3rGy0 | Archivado en: Navegadores el día 21/Sep/2005

Una de las cosas que más me molesta de Firefox es que tarda mucho en arrancar con respecto al IE, debido a que éste tiene cargado todo lo necesario para el arranque en memoria. Para solucionar esta desventaja se ha creado Firefox Preloader que queda residente en memoria con todo lo necesario para que Firefox arranque, de manera que cada vez que lo ejecutemos tardará mucho menos en lanzarse.

Lo he probado y efectivamente tarda menos en ejecutarse, aunque quizá no lo hace tan rápidamente como esperaba. Supongo que ya lo irán mejorando con sucesivas versiones.

Fuente: BandaAncha

S3rGy0.


| 1 Comentario »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarWikipedia en tu PDA

Autor: S3rGy0 | Archivado en: General el día 15/Sep/2005

WikipediaPor fin ha salido una versión de Wikipedia, la enciclopedia libre, para pda y en español. La idea ha surgido de la magnífica web PdaExpertos, donde podréis encontrar más información.

Hay tres versiones de la misma, una sin imagenes (57 Mb), otra con imagenes cuya resolución es de 130×130 (115 Mb) y la última con imágenes de 260×260 (217 Mb).

La enciclopedia puede ser visualizada con el programa TomeRaider, que está disponible para palm y pocket pc.



¡Esta va a mi LifeDrive de cabeza! ;)

S3rGy0.


| 4 Comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarCertificado MCAD

Autor: S3rGy0 | Archivado en: ASP, General, Microsoft el día 2/Sep/2005

Recientemente acabo de sacarme (por fin) el certificado Microsoft Certified Application Developer, razón principal por lo que últimamente he estado tan poco participativo en este blog :(. Después de mi experiencia quería comentar en este post como me ha ido por si alguien le interesa y quiere saber con qué se va a encontrar.

En primer lugar, para obtener el certificado hay que aprobar 3 exámenes, correspondiendose cada examen con un bloque: el primero será el bloque de aplicaciones con interfaz (por llamarlo de alguna manera), el segundo serían servicios web y el tercero sería un examen a elegir entre varias materias, algo parecido a lo que sería una asignatura optativa de la carrera:

Primer bloque:

- Exam 70–305: Developing and Implementing Web Applications with Microsoft Visual Basic® .NET and Microsoft Visual Studio® .NET.

- Exam 70–306*: Developing and Implementing Windows-based Applications with Microsoft Visual Basic .NET and Microsoft Visual Studio .NET.

- Exam 70–315*: Developing and Implementing Web Applications with Microsoft Visual C#™ .NET and Microsoft Visual Studio .NET.

Exam 70–316*: Developing and Implementing Windows-based Applications with Microsoft Visual C# .NET and Microsoft Visual Studio .NET.

En mi caso he hecho el 70-305 de desarrollo de aplicaciones Web mediante Visual Basic.

Segundo bloque:

- Exam 70–310*: Developing XML Web Services and Server Components with Microsoft Visual Basic .NET and the Microsoft .NET Framework.

- Exam 70–320*: Developing XML Web Services and Server Components with Microsoft Visual C# and the Microsoft .NET Framework.

En mi caso hice el 70-310, ya que el primero lo había hecho con Visual Basic .NET en lugar de C#.

Tercer bloque:

- Exam 70–229: Designing and Implementing Databases with Microsoft SQL Server™ 2000 Enterprise Edition.

- Exam 70–230: Designing and Implementing Solutions with Microsoft BizTalk Server® 2000 Enterprise Edition.

- Exam 70–234: Designing and Implementing Solutions with Microsoft Commerce Server 2000.

- Exam 70-305*, 70-306*, 70-315*, or 70-316*

If you use Exam 70-305 or 70-315 to satisfy the core exam requirement, you may use either Exam 70-306 or 70-316 as an elective.

If you use Exam 70-306 or 70-316 to satisfy the core exam requirement, you may use either Exam 70-305 or 70-315 as an elective.

- Exam 70–330: Implementing Security for Applications with Microsoft Visual Basic .NET.

- Exam 70–340: Implementing Security for Applications with Microsoft Visual C# .NET.

En mi caso elegí el 70-229.

Para cada examen hay que pagar un derecho de examen de 175 € más IVA y sólo se pueden realizar en centros acreditados. En mi caso tuve que hacer los dos primeros en Sevilla porque hasta Julio no había ningún centro en Córdoba :(.

El examen puedes hacerlo en español ó inglés, en mi caso lo he hecho en inglés porque, leyendo en los grupos de noticias de microsoft especializados, comentaban que las traducciones a español de los exámenes no eran muy buenas y podían generar muchas dudas a la hora de hacer el examen.

A la hora de estudiar hay muchísimo material, obviamente el oficial hay que comprarlo (no lo va a regalar microsoft), por lo que directamente pasé de él. Yo os recomiendo que os busqueis los libros oficiales en versión electrónica (pdf, chm, doc, etc…), y sobre todo, material de TestKing.

Esta web se dedica a vender exámenes de práctica, que resultan ser exactamente las mismas preguntas que ya han caído en otros exámenes anteriores. Dado que para hacer el examen te conectas a un servidor que tiene una lista de preguntas y, a partir de estas, genera un examen (tipo test), el 95% de las preguntas ya están plasmadas en los TestKing. No hará falta que diga lo interesante que resulta pillarse estos exámenes.

También me ha gustado mucho los exámenes de prueba de uCertify, que aunque no son exactos como los TestKing, son bastante parecidos y sobre todo te explican muy bien la respuesta y las opciones incorrectas.

Todo esto lo podéis encontrar fácilmente en el eMule. Además, para los TestKing he encontrado una página muy buena: examcollection. Esta página te permite descargar gratuitamente exámenes de TestKing en formato VCE. Este formato corresponde a un programa llamado Virtual CertExam (también disponible en eMule :)) que simula el mismo formato que el examen original. Esto es mucho más comodo que ir leyendo una lista de preguntas en un PDF, que es el formato que proporciona TestKing.

Con esto hay material pa jartarse y si queréis más información sólo tenéis que preguntar en esta web :). Ya sólo queda estudiar como locos y echarle muchas ganas.

S3rGy0.


| 40 Comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarGoogleNET

Autor: S3rGy0 | Archivado en: General, Internet el día 16/Ago/2005

Según acabo de leer en google.dirson.com y BandaAncha.st, se está rumoreando sobre la posible creación de una red WIFI de ámbito nacional dentro de los Estados Juntitos por parte de Google. Esta red proporcionaría acceso a internet gratuíto y se financiaría mediante anuncios publicitarios de ámbito local. Para poder determinar desde qué lugar se conecta cada usuario, y así poder enviar publicidad referente a cada localización, usaría una tecnología desarrollada por la empresa Feeva Wireless Inc., detrás de la cual estaría Google.

El rumor se fundamenta a que, desde abril, Google tiene esponsorizado un hotspot en una zona de compras de San Francisco. Habría sido montado por Feeva y al parecer tendrían intención de expandirse por otras ciudades. Obviamente hay mucha diferencia entre tener acceso WIFI en una zona concreta de una ciudad y tener acceso WIFI para todo un país, pero ya puestos a soñar… ¿y si lo hicieran también en Europa? … No quiero pensarlo… no caerá esa breva… arf, arf…

S3rGy0.


| 1 Comentario »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarMostrar capa teniendo en cuenta el scroll

Autor: S3rGy0 | Archivado en: ASP, HTML, JavaScript el día 20/Jun/2005

El otro día estaba tratando de mostrar una capa al pasar el puntero del ratón sobre una imagen, de manera que la capa apareciera justo debajo del puntero del ratón. Al principio sólo tuve que mostrarla cuando se lanzará el evento onmouseover, pero a medida que iba añadiendo controles a la página ésta se iba haciendo más grande hasta que apareció el maldito scroll. Lo que ocurrió entonces es que la capa no me salía justo debajo del puntero del ratón sino que se desplazaba arriba o abajo. Después de un rato mirando el código me di cuenta que el desplazamiento que se producía era equivalente al desplazamiento que tenía la barra de scroll, por lo tanto, para solucionarlo tuve que sumarle a la posición actual del ratón, el desplazamiento de la barra de scroll:

document.getElementById(”divObservaciones”).style.left=event.clientX + document.body.scrollLeft;
document.getElementById(”divObservaciones”).style.top=event.clientY + document.body.scrollTop;

Esto se debe a que event.clientX y su homólogo en el eje Y toman una posición relativa a la pantalla, mientras que las propiedades left y top toman medidas absolutas, por lo que se produce un desfase. Si a la posición del puntero del ratón le sumamos los desplazamientos, tanto horizontal como vertical del scroll, obtendremos las posiciones absolutas que demandan las propiedades left y top.

Con esto la capa siempre se muestra donde yo quiero, aunque haya un scroll de por medio.

S3rGy0.


| 4 Comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarValidación de un formulario mediante JavaScript

Autor: S3rGy0 | Archivado en: ASP el día 15/Jun/2005

Una de las novedades que ha introducido ASP.NET con respecto a ASP 3.0 ha sido los controles de validación de los controles de un formulario. A mi particularmente no me gustan nada, ya que me parece que son muy poco flexibles y bastante feos. Por ejemplo, tienes que crear chorrocientos mil controles, uno para cada input ó select y terminas con la vista de diseño petada.

Yo lo que hago es utilizar una función javascript que valide los controles de forma personalizada. Esto a priori puede parecer más costoso que arrastrar los Validators en la vista de diseño, pero en realidad sólo tienes que escribir el código la primera vez, el resto es prácticamente copiar y pegar.

La única complicación que tiene esto (por llamarlo de alguna forma ;)) es parar la ejecución de la aplicación cuando se encuentre un error y que no llegue a ejecutarse la parte servidora. para ello debemos llamar a la función en el onclick del control de esta manera:

<input id=cmdGuardar type=button runat=server onclick=”if(!validarDatos()) return;”>

De esta forma si se recibe un false no continúa la ejecución de la página en el servidor.

A continuación hay que crear la función jscript. Aquí os pongo una de ejemplo:

function validarDatos()
{
var resultado=true;
var errores=”";

Form1.imgTitulo.style.visibility=”hidden”;

//Campos obligatorios

if(document.getElementById(”txtTitulo”).value==”")
{
errores=errores+”n - Debe introducir el Título.”;
Form1.imgTitulo.style.visibility=”visible”;
resultado=false;
}

if(resultado==false)
{
errores=”Se han encontrado los siguientes errores: n” + errores;
alert(errores);
}

return resultado;
}

El funcionamiento es el siguiente: Se declaran dos variables donde se va a ir almacenando el resultado de la validación (true ó false) y la descripción de los errores (para no madar un alert por cada error, sino que se manda uno solo). La siguiente sentencia es opcional. Lo que hace es ocultar al inicio de la validación una imagen que irá a la derecha de cada control; se trata de un gif animado con una señal de admiración que parpadea, para indicar al usuario dónde se ha producido el error. Es opcional, si no queréis usarla, pues omitar las líneas que hagan referencia a este control.

Seguidamente se valida el control. En el ejemplo se comprueba que se haya introducido algo en él, ya que se trata de un control obligatorio. En el caso de encontrarse un error se concatena el error a los posibles errores previos, se muestra el gif que parpadea y se pone como resultado false.

Por último, si el resultado es negativo, se muestra el error y se devuelve el resultado de la validación.

Como veis es lo más simple del mundo y sin embargo permite una mayor flexibilidad a la hora de validad todo tipo de datos. Por supuesto seguro que habrá muchos que sigan prefiriendo los Validators, pero aquí tenéis una alternativa.

S3rGy0.


| 3 Comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarMostrar confirmación en ASP.NET

Autor: S3rGy0 | Archivado en: ASP el día 25/May/2005

Ya hemos visto como mostrar el equivalente a un Msgbox utilizando un script en la parte cliente, pues algo parecido, aunque un poco más complicado es mostrar una confirmación. El mecanismo es el mismo, pero además hay que crear todo lo necesario para que, si la confirmación es positiva, no se pare la ejecución de la aplicación y siga ejecutando lo que debiera hacer tras pulsar afirmativamente.

En primer lugar debemos crar un textbox y un botón ocultos:

<input id=txtConfirmacion runat=server type=text style=”DISPLAY: none”>
<input id=cmdAccion runat=server type=button style=”DISPLAY: none”>

De esta manera cuando queramos mostrar una confirmación escribiremos en el código servidor:

txtConfirmacion.value=”¿Está usted seguro de que quiere reventar la base de datos?”
Exit Sub

Se generará un postback tras ejecutarse Exit Sub y se recargará la página, por lo que en <body> debemos añadir un script que se cargue en el onload y que tenga este código:

function mostrarConfirmacion()
{
var resultado;

if(document.getElementById(”txtConfirmacion”).value != “”)
{
resultado=confirm(document.getElementById(”txtConfirmacion”).value);
document.getElementById(”txtConfirmacion”).value=”";

if(resultado==true)
document.getElementById(”cmdAccion”).click();
else
return false;
}
}

Por último hay que implementar el código pertinente en el evento Server_Click del botón cmdAccion.

Si os habéis dado cuenta esto es muy util cuando queréis realizar una confirmación en medio del código servidor, por ejemplo, realizáis desde el servidor una validación de un fichero y una vez terminada queréis enviar el fichero por correo electrónico con una confirmación previa por parte del usuario. Al terminar de validar el fichero no hay ningún evento que lance la confirmación, por eso hacemos una simulación en el onload y en caso de ser afirmativa, se hace click automáticamente sobre el botón oculto. Este click nos llevará a un código servidor que mandará un correo electrónico con el fichero adjunto.

Espero haberme explicado con este ejemplo, pero si tenéis alguna duda dejad un comentario y os responderé en cuanto me sea posible.

S3rGy0.


| 1 Comentario »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis

votarMejora de AMD64 con respecto a los 32 bits

Autor: S3rGy0 | Archivado en: Hardware el día 13/May/2005

Cuando hace unos meses estaba pensando en comprarme mi actual procesador: un AMD 3000 64 bits, me puse a buscar por internet como un loco una comparativa en la que explicara si merecía la pena gastarse más dinero en función del incremento de velocidad o eficiencia. Por desgracia no encontré ninguno. Tengo que añadir que al final decidí lanzarme y hoy en día estoy MUY contento con mi adquisición.

Pues bien, acabo de encontrar una comparativa, a través de barrapunto, en la que se hacen una serie de pruebas con diferentes aplicaciones (en una Ubuntu) y los resultados muestran un incremento de, aproximadamente, un 20% de velocidad del procesador 64 bits con respecto al de 32 bits. Es bastante curioso que dependiendo de la aplicación puede variar desde el 5% obtenido por Mencoder 1600×800 al 62% conseguido al descomprimir un fichero .bz2.

Lectura recomendada para quien este dudando si pasarse a 64 bits o seguir con 32, aunque yo personalmente recomiendo la primera opción.

S3rGy0.


| 2 Comentarios »
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis