Archivo Mayo, 2007

Exportar película de Flash a AVI con Windows Media Video 9 VCM

Si por azares del destino tienes que convertir una película de Flash a AVI, te habrás dado cuenta de que los AVIs resultantes quedan de un tamaño inmenso.

Aquí está un tip: Descárgate los CODECs de Windows Media Video 9 VCM, de esta dirección, o búscalos en la página de Microsoft o Googlealos.

Instálalos.

En Flash, exporta la película con la opción de menú Exportar Película (no con Publicar), asegúrate de que esté marcada la opción Compress Video para que te aparezca a continuación la pantalla de compresores, y oprime Ok.

En la pantalla de compresores elige el recién instalado Microsoft Windows Media Video 9 y si quieres más configuraciones, haz clic en Configurar.

Listo, exporta tu AVI.

El mismo archivo comprimido con un codec de los que vienen por default puede reducirse de 200MB a 2MB con una calidad impresionante.

1 Comentario

Cómo tomar un screenshot de un video en Windows Media Player

Si has intentado tomar un screenshot de un video que se reproduce en Windows Media Player, seguramente has notado que solamente aparece un cuadro negro. Para poder hacerlo, ve al menú de Windows Media Player, selecciona Herramientas -> Opciones -> Rendimiento y en la sección donde dice Aceleración de video coloca el valor en Ninguna.

Si no encuentras el menú (por el nuevo diseño de Windows Media Player que oculta los menús de texto tradicionales) simplemente oprime una vez la tecla Alt y se desplegará.

Cuando termines de hacer tus screenshots regrésalo a Completa para asegurarte de que no degradas la visualización de tus videos.

Windows Media Player

Por si no lo sabías…

¿Qué es un screenshot?

No hay Comentarios

Qué es un screenshot?

Es una copia de lo que estás viendo en pantalla. Puedes copiar todo tu escritorio de Windows oprimiendo la tecla Impr Pant (o Prt Scr en inglés). O bien, copiar únicamente la ventana que está activa, oprimiendo la tecla Alt y al mismo tiempo Impr Pant.

Esto toma una imagen que después puedes pegar en tu editor favorito de imágenes.

Así es como tomo todas las imágenes para este blog.

No hay Comentarios

Ejemplo básico de un UpdatePanelAnimationExtender de Ajax

Este es un ejemplo probado de un UpdatePanelAnimationExtender de Ajax.

Cuando el UpdatePanel ha sido actualizado este ejemplo hace un fade out y luego un fade in al contenido de un tag DIV.

Te servirá de base para experimentar.

VerPostal.aspx

ASP:
  1. <asp:ScriptManager id="ScriptManager1" runat="server"> </asp:ScriptManager>
  2.   <asp:UpdatePanel id="UpdatePanel1" runat="server">
  3.     <contenttemplate>
  4.       <DIV style="BACKGROUND-COLOR: silver">
  5.         <asp:Label id="Label1" runat="server" Text="Label"> </asp:Label>
  6.         <BR />
  7.         <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"> </asp:Button>
  8.         &nbsp;<BR />
  9.         <BR />
  10.         <BR />
  11.         <BR />
  12.         <BR />
  13.       </DIV>
  14.     </contenttemplate>
  15.   </asp:UpdatePanel>
  16.   <cc1:UpdatePanelAnimationExtender id="UpdatePanelAnimationExtender1" runat="server"
  17.         TargetControlID="UpdatePanel1">
  18.     <animations>
  19.       <OnUpdated>
  20.         <Sequence>
  21.           <FadeOut Duration=".2" Fps="30" />
  22.           <FadeIn Duration=".2" Fps="30" />
  23.         </Sequence>
  24.       </OnUpdated>
  25.     </animations>
  26.   </cc1:UpdatePanelAnimationExtender>

VerPostal.aspx.vb

VB.NET:
  1. Partial Class VerPostal
  2.     Inherits System.Web.UI.Page
  3.  
  4.     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  5.         Label1.Text = Now.ToString
  6.     End Sub
  7.  
  8. End Class

Más información:
http://ajax.asp.net/ajaxtoolkit/UpdatePanelAnimation/UpdatePanelAnimation.aspx

2 Comentarios

Cómo mostrar los n primeros registros de una tabla o consulta

En ocasiones es necesario mostrar los n primeros registros de una tabla o consulta.

Supón que tienes una base de datos donde guardas un historial de noticias. Quieres mostrar en la portada de tu sitio web las 5 noticias más recientes. Es sencillo realizar una consulta que te devuelva todas las noticias ordenadas por fecha descendente, pero solamente necesitas las 5 primeras.

Para hacerlo en mySQL se utiliza LIMIT

Sintaxis:

SQL:
  1. SELECT * FROM tabla LIMIT x, y

Donde:
x es el renglón a partir del cual se devolverá. El primer renglón es 0, no 1.
y es la cantidad de registros a devolver.

De tal manera que:

SQL:
  1. SELECT * FROM tabla LIMIT 0, 5

devuelve los primeros cinco renglones a partir del primero. Es decir, los renglones 0, 1, 2, 3 y 4.

SQL:
  1. SELECT * FROM tabla LIMIT 5, 10

devuelve 10 renglones a partir del sexto, es decir, los renglones 6, 7, 8, 9, 10, 11, 12, 13, 14 y 15.

Regresando al caso que planteado al inicio de este post, la sentencia SQL quedaría asi:

SQL:
  1. SELECT * FROM noticias ORDER BY fecha DESC LIMIT 0,5

Para una referencia completa visita:
http://dev.mysql.com/doc/refman/5.0/es/select.html

1 Comentario

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints

Este error ya ha aparecido en dos de mis proyectos.

Tenía un Datalist (o Gridview) que estaba ligado a un ObjectDatasource, el cual se alimentaba de un Business Layer que a su vez tomaba los datos de un archivo XSD.

Estuve peléandome con todos estos objetos, checando sus propiedades, borrándolos y volviéndolos a crear, y nada funcionó.

En las dos ocasiones que se me presentó esta situación, resulta que el problema estaba en los datos!

En ambas ocasiones estaba convirtiendo la aplicación de ASP.NET 1 a ASP.NET 2, por lo que ya contaba con la base de datos y ésta ya tenia información real.

Así es que si no encuentras el problema en la lógica, checa también los datos. En uno de los casos pasaba que había un campo de fecha, el cual tenía muchos registros que tenían la fecha establecida en "0000-00-00", es decir, no la habían capturado porque era un campo que quedó en desuso y no tuve la precisión de eliminarlo o llenarlo con una fecha válida.

El caso es que cuando la aplicación trataba de llenar el DataList, se encontraba con esa fecha inválida y regresaba el error:

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

Mi solución: llené todos esos campos con fechas válidas y funcionó.

Repito, pasa muchas veces, si no encuentras el error en tu lógica, siempre revisa la validez de los datos en la base de datos.

Actualización

Me volvió a suceder el mismo error, y encontré una razón más contundente.

Resulta que mi sentencia SQL hacía un join de tres tablas. Estaba intentando colocar esa sentencia en un TableAdapter que había creado para una de las tablas:

TableAdapter para una sola tabla

El TableAdapter mostrado arriba contiene la definición de una tabla, es por eso que se pueden leer los campos id, idPostal, idusuario, etc.

Al ejecutar el join se mostraba el error descrito en la primera parte de este post.

Para solucionar esta situación tuve que pasar la sentencia que contenía el join a un nuevo TableAdapter, como se muestra a continuación:

TableAdapter para un join de varias tablas

Listo, como puedes ver el TableAdapter creado ya no contiene toda la definición de las columnas. Le cree una clase BusinessLogic la cual uso en mi código y ya no marca esos problemas. :)

Segunda Actualización

En otros casos puede ser la propiedad MaxLength. Por ejemplo, si en tu TableAdapter tienes esa propiedad establecida en un valor distinto al que aparece para ese mismo campo en las sentencias Insert o Update, también ocurre este error. Todos los MaxLength para el mismo campo deben ser iguales para todas las sentencias y para las propiedades mismas del adaptador.

11 Comentarios

Cómo reescribir el URL (URL rewriting) para usar Permalinks con WordPress y Windows 2003 (IIS)

Breve introducción

WordPress viene con un mecanismo llamado Permalinks, mediante el cual se reescribe el URL.

Sin Permalinks, tus posts se verán así:
http://www.viale.com.mx/?p=4432

Con Permalinks, se verán así:
http://www.viale.com.mx/como-hacer-un-sitio-web

Como podrás ver, la ventaja es que el URL se vuelve mas legible, y más significativo para las máquinas de búsqueda como Google.

Ahora bien, para lograr esta reescritura del URL necesitas tener acceso al servidor mediante remote desktop. No te bastará con una cuenta de FTP. También puedes pedirle al administrador que lo haga por ti.

Cómo hacerlo

Probado con: WordPress 2.1 y Windows Server 2003

La herramienta para reescritura de URLs que yo utilizo la hizo Dean Lee.

1. Descarga los archivos

Descarga los archivos de Dean Lee de su sitio web y extráelos. Debes tener los siguientes archivos:

config.ini
msvcr80.dll
WordPressPlugin.dll

Cópialos y pégalos en la carpeta raíz de tu blog.

Con un bloc de notas abre el archivo config.ini. Encontrarás que solamente tiene una diagonal. Esta configuración se utiliza si tu blog estará en la carpeta raíz de tu sitio web. Es decir, si tu blog será accesible mediante una dirección como esta:

http://www.viale.com.mx

Por otro lado, si tu blog está en una carpeta, por ejemplo http://www.viale.com.mx/blog entonces tienes que modificar el archivo config.ini para que diga: /blog/

Nota: Si piensas poner tu blog en una carpeta del dominio, te recomiendo que no lo hagas. Mejor crea una entrada en tu dns para lograr una dirección como: http://blog.misitioweb.com/. ¿Por qué? Porque vamos a activar un filtro ISAPI en el sitio web. Si el resto de tu sitio web no lo va a usar, entonces más vale separarlo en dos sitios web, por si las dudas.

2. Configura IIS

En Windows Server, en la consola de Administración de la PC, abre las propiedades de tu sitio y escoge la pestaña ISAPI Filters:

Propiedades del Sitio Web

En esa ventana haz clic en el botón Add. En la nueva ventana escoge el archivo WordPressPlugin.dll que copiaste a tu sitio web y ponle como nombre WordPressPlugin.

ISAPI

Acepta todo hasta que se cierre la ventana de propiedades del Sitio Web.

3. Configura php.ini

Con un bloc de notas abre tu archivo php.ini. De acuerdo a tu instalación este archivo puede estar ubicado en diferentes carpetas, normalmente está en c:\windows\php.ini

Haz una búsqueda en el archivo por la palabra cgi.force_redirect y asegúrate de que esa línea diga:

cgi.force_redirect = 0

OJO: Si tiene un punto y coma antes, quítaselo.

Ahora agrega la siguiente línea:

cgi.fix_pathinfo = 1

Debe quedar así:

php.ini

Ahora reinicia el IIS.

4. Configura WordPress

Abre tu consola de WordPress y ve a Opciones->Permalinks.

Dale clic a la opción Personalizada, especificar aquí y teclea

/%year%/%monthnum%/%day%/%postname%/

Permalink

Oprime el botón Actualizar estructura de permalink para guardar los cambios.

Ya debe de funcionar. Si no lo hace, asegúrate de que hayas reiniciado IIS.

Ahora navega por tu blog y revisa cómo las direcciones de tus posts han cambiado. :)

Nota importante. Un punto negativo de esta herramienta es que si utilizas algún caracter no común en inglés. Por ejemplo un signo de interrogación que abre: ¿, entonces cuando intentes hacer clic a la liga de tu post, no abrirá porque pone un símbolo extraño como %c2%bf.

2 Comentarios

Cómo desactivar los comentarios en WordPress

Por default, WordPress permite que la gente haga comentarios a tus posts. Si no quieres que esto suceda, debes deshabilitarlos.

Para hacerlo, tienes que hacer dos cosas:

1. A los posts que ya existan, debes deshabilitarles los comentarios.

Ve a editar cada uno de tus posts y desmarca la palomita donde dice Permitir comentarios

Deshabilitar comentarios
Haz clic en la imagen para agrandarla

2. Debes indicarle a WordPress que los nuevos posts deben tener por default los comentarios deshabilitados.

Ve a Opciones -> Discusión y desmarca la palomita donde dice Permitir comentarios en esta entrada.

Deshabilitar comentarios
Haz clic en la imagen para agrandarla

Ahora nadie podrá escribir comentarios a ninguno de tus posts.

No hay Comentarios

Crea un doble menú para soportar handhelds

Si utilizas una herramienta de menús desplegables en tu sitio web (como Sothink DHTML Menu), te habrás dado cuenta de que el menú no se despliega en una Pocket PC o Palm, en muchas ocasiones no aparecen ni las opciones principales. La navegación se pierde totalmente.

** Antes que nada, te recomiendo siempre tener un mapa del sitio accesible mediante un link sencillo para evitar este problema.

De cualquier forma, te muestro a continuación de qué manera puedes hacer que el menú se despliegue para estos dispositivos.

La línea que llama a tu menú debe verse como esta:

JavaScript:
  1. <script type='text/javascript' language='JavaScript1.2' src='menuDesplegable.js'><\/script>

Sustitúyela por estas dos:

JavaScript:
  1. <script type="text/javascript" src="brwsniff.js"></script>
  2. <script type="text/javascript" language="JavaScript1.2" src="SelectorDeMenus.js"></script>

El archivo brwsniff.js es un detector de navegadores, puedes descargarlo de aquí.

Te recomiendo echarle un ojo al archivo adjunto que pongo en este post ya que hice una pequeña modificación al script, añadí una función llamada writit. Bájalo de aquí.

Con tu editor de textos preferido, crea el documento SelectorDeMenus.js y pega lo siguiente:

JavaScript:
  1. var br=new Array(4);
  2.   var os=new Array(2);
  3.   var flash=new Array(2);
  4.   br=getBrowser();
  5.   os=getOS();
  6.   flash=hasFlashPlugin();
  7. if(os[0]!="wince" && os[0]!="palmos"){
  8.     document.write("<script type='text/javascript' language='JavaScript1.2' src='http://www.mipagina.com.mx/menuDesplegable.js'><\/script>");   
  9. }
  10. else{
  11.     document.write("<table width='100%' border='0' cellspacing='0' cellpadding='2'><tr>");
  12.     document.write("<td><a href='http://www.mipagina.com.mx/'>Hogar<\/a><\/td><\/tr><tr>");
  13.     document.write("<td><a href='http://www.mipagina.com.mx/Seccion1.aspx'>Secci&oacute;n 1<\/a><\/td><\/tr><tr>");
  14.     document.write("<td><a href='http://www.mipagina.com.mx/Seccion2.aspx'>Secci&oacute;n 2<\/a><\/td><\/tr><\/table>");
  15.  
  16.   }

Si tienes problemas pegando el código, baja el archivo de aquí.

Si te fijas bien estamos detectando el navegador, si no se trata de wince (pocket pc) ni de palmos, entonces manda el menú desplegable completo. De lo contrario, manda una tabla con las ligas en HTML puro, para que estos dispositivos las puedan leer y mostrar correctamente.

Claro, cada vez que modifiques tu menú desplegable, tendrás que recordar modificar este script, pero es una buena opción para no dejar fuera a los navegadores de handhelds.

1 Comentario

Cómo resetear (soft reset y hard reset) la iPaq 3115

Sigue estos pasos para hacer soft reset y hard reset a tu Pocket PC iPaq 3115. También sirve para otros modelos.

iPaq 3115

En la imagen se muestra el diagrama de la iPaq 3115.

Soft Reset

El Reset simple solamente limpia la memoria y reinicia el sistema operativo. Cuando regresas de un reset simple encuentras todos tus programas instalados y todos tus datos (contacto, mail, calendario, etc.) intactos, pero con una memoria limpia.

Para hacer soft reset usa tu stylus (lápiz de la iPaq) e introdúcelo en el orificio que está en la parte inferior (etiquetado en el diagrama con el número 8 ) hasta que sientas que hiciste clic en él.

Hard Reset

Si algo más grave ocurre, es necesario hacer un hard reset. El hard reset eliminará toda la información que tengas en tu iPaq, es decir programas instalados, tus contactos, mail, calendario, archivos, todo. Por eso debes hacer esta operación solamente si es necesario y solamente si tienes manera de recuperar todos tus datos y programas, ya que estás próximo a perderlo todo.

Para hacer un hard reset oprime los botones 9 (primer botón frontal) y 3 (cuarto botón frontal) al mismo tiempo. Mantenlos oprimidos y al mismo tiempo usa tu stylus (lápiz de la iPaq) e introdúcelo en el orificio que está en la parte inferior (etiquetado en el diagrama con el número 8 ) hasta que sientas que hiciste clic en él.

No hay Comentarios