domingo, 20 de diciembre de 2009

Script bash para crear carpeta de Subversion



El siguiente script permite crear la estructura tipica de carpetas subversion. Se asume que tenemos un repositorio ya funcionando llamado repositorio.
El nombre del script lo he llamado 0subversion.sh. Este puede ser ejecutado de la siguiente manera: sudo sh 0subversion.sh
Luego el script pregunta por el nombre de la carpeta del proyecto.

#!/bin/bash
echo Por favor, introduzca nombre de la carpeta Subversion
read NOMBRE
svn mkdir file:///var/svn/repositorio/$NOMBRE -m "Raiz"
svn mkdir file:///var/svn/repositorio/$NOMBRE/trunk -m "Trunk"
svn mkdir file:///var/svn/repositorio/$NOMBRE/tags -m "Tags"
svn mkdir file:///var/svn/repositorio/$NOMBRE/branches -m "Branches"
echo "Carpeta $NOMBRE creada con exito!"

sábado, 5 de diciembre de 2009

Como habilitar mod_rewrite de Apache

mod_rewrite es un módulo de Apache que permite manipular urls. O dicho en otras palabras hacer amigables las urls para los navegadores. Este módulo es mucho mas poderoso que lo anteriormente dicho. Por lo que para sacarle el mayor provecho se requieren de algunos conocimientos extras.

Algunas aplicaciones requiren que este módulo este habilitado, y para hacerlo se debe hacer lo siguiente:

Ejecutar:
sudo a2enmod rewrite

Editar el archivo /etc/apache2/sites-enabled/000-default:
sudo gedit /etc/apache2/sites-enabled/000-default

Donde dice Directory /var/www/
Cambiar ‘AllowOverride None’ por ‘AllowOverride All’

Luego reiniciar Apache
sudo /etc/init.d/apache2 force-reload

mas información en:
http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

jueves, 26 de noviembre de 2009

Cuidado con los dedos: sudo chmod 777 -R /*

El otro día cometí el error de cambiar los permisos de la raíz de Ubuntu. Ejecutando desde la consola algo como esto: sudo chmod 777 -R /*. Acto seguido, no funcionaba Internet, y al momento de querer usar el usuario root, me aparecía el mensaje: Must be setuid root. Este problema se produjo en una maquina virtual, donde tengo algunas cosas que casi en su totalidad estaban respaldadas. Pero como no quiero ir por la vida como aquellos que formatean al primer problema. Me puse a investigar y la solución que encontré fue la que comparto a continuación:

Al iniciar Linux, justo despues que se ejecuta GRUB.
Se debe presionar Escape
Aparecera una pantalla en donde se debe elegir el inicio RECOVERY MODE
Acto seguido aparece otra ventana donde se debe seleccionar Dropt to root shell Prompt
Lo anterior permite entrar en una consola como root.
Se debe ejecutar lo siguiente: chmod 4111 /usr/bin/sudo
luego ejecutar sudo
la consola va a indicar que /etc/sudoers tiene permisos 0777 y deberian ser 0440 por lo que se debe ejecutar chmod 0440 /etc/sudoers

luego de eso reiniciar y desaparece el problema de permisos y en mi caso volvi a tener Internet en esa maquina.



sábado, 31 de octubre de 2009

Instalar Apache y PHP en Ubuntu

Para instalar Apache desde una consola se debe escribir lo siguiente:

sudo aptitude install apache2

Para instalar PHP
sudo aptitude install php5

Aparecera la siguiente consulta a la cual le ingresamos "Y"
Necesito descargar 5013kB de ficheros. Después de desempaquetar se usarán 13,2MB.
¿Quiere continuar? [Y/n/?] Y

El proceso tarda algunos minutos.

Para asegurar que Apache este instalado basta colocar en el navegador la siguiente dirección:
http://localhost/ , tras lo cual debe aparecer una página con el mensaje: It Works!

Luego de eso voy a asegurar de que este correcta la instalación de PHP. Creando un archivo .php (info.php) y ejecutandolo desde el localhost. http://localhost/info.php

Para crear el archivo en el directorio /var/www/ se debe ejecutar lo siguiente:
sudo gedit info.php

El código del archivo contendrá lo siguiente:

phpinfo();
?>

este código me mostrará una página con la configuración de PHP.
Tras un primer intento, el navegador muestra el dialogo para descargar la página. Lo que me indica que algo no esta funcionando por lo que reiniciaré Apache:

sudo /etc/init.d/apache2 restart

Después de eso la configuración esta correcta.





Libro, Aprende a Programar en PHP YA!

domingo, 18 de octubre de 2009

Instalar XAMPP en Windows XP

XAMP es un proyecto Open Source que consta de Apache, MySQL, PHP, Perl y el termino X significa que es multiplaforma. En este artículo mostraré como se instala en Windows XP.

Descarga
http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/xampp-win32-1.7.2.exe/download#


Puedes seleccionar la unidad donde deseas instalarla. En este caso lo dejo en la unidad c. Por lo que el instalador creará una la siguiente carpeta: C:\xampp


Pregunta si deseas agregar iconos en el inicio o en el escritorio. Mi respuesta es si.


Esta pregunta la interprete de dos maneras. Que el programa verifica el path de XAMPP o yo verifico el path de XAMPP. Verifique que estaba la carpeta c:\xampp y elijo yes.

Pregunta sobre si dejo la instalación portable. Respondo que no. Luego de eso, reubica la instalación de XAMPP?. Tras lo cual indica que esta listo para usar. Por lo que apreto enter.


El timezone no es el que quiero, pero me da la pista de que la configuración esta en el php.ini y en my.ini. No tengo mas alternativa de modo que apreto enter para continuar.


Me quedo con todas esas caracteristicas, y presiono x.

luego de la instalación, voy al navegador y coloco http://localhost/xampp y no aparece nada. Por lo que intente con la ip de la maquina (maquina virtual - virtualbox) http://10.0.2.15/xampp y nada por lo que inicie apache y mysql uno a uno y funciono:



Esta ultima nos indica que la instalación es satisfactoria y tenemos nuestro ambiente de desarrollo con Apache, PHP, Perl y MySQL.



También en la siguiente dirección:
http://10.0.2.15/phpmyadmin/
puedes encontrar phpMyAdmin para administrar tus bases MySql.
en tu caso la dirección puede ser:

http://localhost/xampp
http://localhost/phpmyadmin

jueves, 24 de septiembre de 2009

AllVideos Reloaded

AllVideos Reloaded es un plugin de Joomla, fork del proyecto AllVideos.
El plugin AllVideos Reloaded permite integrar videos o audio en los articulos de Joomla. Estos archivos pueden estar localizados en un servidor remoto o en un servidor local.

Voy a linkear el siguiente video de youtube, para demostrar el uso:
http://www.youtube.com/watch?v=TaJKDYZ-n38
Vamos al gestor de artículos de Joomla, y creamos un artículo, elegimos nuevo artículo, y dentro de esa pantalla vamos a ver en la parte inferior aparece un botón con el texto AVR Media


Pulsamos el botón y nos aparece un dialogo que nos permite, indicar donde se encuentra nuestro archivo (Si es local o remoto), yo elijo remoto puesto que se trata de Youtube. Indico la url, selecciono el proveedor del medio y solo rellena los datos faltantes. Tras lo cual pincho insertar y en el articulo que cree queda un código que hace relación al video que indicamos. El código que inserta el dialogo es el siguiente:
{youtubejw}TaJKDYZ-n38{/youtubejw}



Link de descarga:
http://extensions.joomla.org/extensions/multimedia/video-players-a-gallery/3955

martes, 22 de septiembre de 2009

Herramientas de analisis de visitas en Cpanel


CPanel es una herramienta no libre para la administración de servicios de Web Hosting. No tengo datos duros, pero es probablemente el software mas usado por quienes tienen hosting bajo plataforma Linux.

Uno de mis clientes de hosting (www.hostingseguro.cl), me pregunto si el sitio que estaban hosteando contaba con registro de visitas. Por lo que le respondi que si, todo servidor Web tiene un log de visitas. En archivo de texto, para los cuales hay herramientas que permiten ver informes mas pro. Cpanel cuenta con estas herramientas que permiten al Webmaster, hacer analisis de las visitas de su sitio de forma visual, con graficos e imagenes. Bajo el item registros, se pueden encontrar estas y otras funcionalidades:

Ultimos visitantes
Entrega una lista de los ultimos 300 visitas del sitio.

Banda Ancha
Esta función permite ver el uso de la banda ancha del sitio.

Webalizer
Es un analizador de logs que genera una estadistica visual de quien a visitado el sitio.

Webalizer ftp
Estadisticas del uso de las cuentas ftp.

Registro de acceso Raw
Informe de las visitas en formato texto.

Estadisticas Analog
Resumen simple de toda la gente que ha visitado la Web.

Registro de Errores
Muestra los ultimos 300 errores del sitio.

Seleccionar programas de registro
Permite escoger el programa de estadisticas a usar.

Awstats
Estadisticas en forma visual de los visitantes.

jueves, 17 de septiembre de 2009

XML Notepad 2007


Hoy debía obtener un archivo xml para pasar desde el sistema de repuestos de la empresa unos productos a ViaWare que es un software de logistica. Y la forma que tenia de obtener esa información fue a partir de un Servicio Web. Pero el formato del archivo no quedaba igual a como lo esperaba Viaware por lo que XSL vino al rescate nuevamente permitiendome pasar un XML a otro XML. Normalmente uso Cooktop pero tenia instalado XML Notepad y me fije que tenia la opción de agregar una hoja XSL por lo que resulto bastante fácil el desarrollo de la hoja de estilo.

Dejo el link de XML Notepad para quien lo desee probar:


miércoles, 16 de septiembre de 2009

Galleria de imagenes para Joomla


Exposé Flash Gallery es la extensión de galería de imagenes recomendada en el Libro Building WebSites With Joomla 1.5. En la demostración que se puede ver en el sitio de descarga http://www.gotgtek.com, parece desarrollada en Flash con una muy buena presentación. Pero al momento de tratar de bajar los archivos uno se pierde trantando de dar con el zip para instalar. Primer intento fallido.
En el sitio de extensiones de Joomla logro dar con una extensión que me llama la atención por su numero de votaciones 244, licencia GPL No comercial, es una perfecta candidata. Me refiero a Phoca Gallery. Una de las cosas que busco es que permita ser configurada en español, por lo que buscando eso encontre un archivo de traducción. Pero al final de cuentas no se donde subirlo, y y estoy re cansado. El backend esta en español y el frontend en inglés ... mañana arreglare ese punto. La voz de la mayoria (244 votos) parece tener la razón en este caso, se trata de una muy buena y recomendable extensión de galería de imagenes para Joomla.




martes, 15 de septiembre de 2009

unable to start debugging Silverlight


Despues de actualizar a Silverlight 3 me sale este error.
Unable to start debugging. The Silverlight managed debugging package isn't installed.


Los programas de Silverlight instalados son los siguientes:
El unico que actualize fue Microsoft Silverlight (de la version 2 la 3)

El mensaje de errror desaparecio al actualizar Microsoft Silverlight 3 Tools. Cuando volvi a abrir el proyecto en el que estaba trabajando el IDE lanzo la utilidad de conversión de versiones. Tras lo cual no tuve problemas.
http://www.microsoft.com/downloads/details.aspx?familyid=9442b0f2-7465-417a-88f3-5e7b5409e9dd&displaylang=en

jueves, 13 de agosto de 2009

Exportar e Importar Wordpress

El look and Feel de la ultima versión de Wordpress me gusta. Es harto diferente de la versión que estoy usando actualmente (no voy a dar la versión). Dada la necesidad de actualizar, y cambiar de servidor mi blog. Entonces es que pense como respaldar y luego exportar todos mis post a la nueva versión y la nueva ubicación. Una opción es respaldar la base de datos a traves de PhpMyAdmin luego subir la base de datos, y hacer la conexión con los nuevos fuentes (ultima versión). Pero encontre una forma mucho mas cómoda de hacerlo, dentro de las opciones que te da Wordpress. Se trata de la opcion de Exportar e Importar. Que se encuentra en Administrar -> Exportar

Con esta opción guardas un archivo xml el cual contiene los usuarios, post, links, etc. Y puede ser importado desde otra instalación de Wordpress. El resultado que obtuve fue satisfactorio, lo que me llama la atención que el archivo pese poco para todos los post que he hecho. He tratado de ver si me falta un post, aparentemente estan todos.
Tengo algunas capturas de pantalla que comparto a continuación:







martes, 11 de agosto de 2009

Recuperar password

No me he puesto a contar la cantidad de passwords y usuarios que manejo. Unos de mas cuidado que otros. Por lo que hay algunos que por la razón o la fuerza deben estar a salvo de terceros y de mi olvido. Aunque tengo a favor que para esos ultra delicados, tengo una memoria intermedia en los dedos. Como leen, en los dedos. Para cuando no recuerdo con facilidad una de esas claves, pongo la mente en blanco, mis manos en el teclado y ahí están mis dedos mágicos ingresando la clave. No es mentira. Eso funciona cuando yo soy el que invento la clave, o la ingreso muchas veces.No así cuando es otro el que crea la clave, y no la he usado mucho. Bueno me paso con un ftp, del cual tenia que hacer un respaldo, me pasaron la password por msn y faltando para las dos de la mañana lógicamente, errar humano es con justificadas razones. Por lo que no guarde el famoso password en algún lugar legible posteriormente. Pero si quedo guardado en el FileZilla que es el cliente Ftp que uso, cubierto por unos asteriscos que parecían carabineros (eso porque te sientes seguro cuando están cerca, pero no se siente lo mismo cuando te sacan un parte). Dados los acontecimientos, tenia dos alternativas. O llamaba a mi amigo para que me diera nuevamente el password o me crakeaba yo mismo. Elegí la segunda opción por que es menos complicada. Mi amigo puede que no este, lo vaya a interrumpir, el tampoco guardo la clave, etc. Pero el password esta ahí cubierto por asteriscos. Entonces me descargo algún programa que revele que hay detrás de los asteriscos y ahí esta el password en menos de 5 minutos. La pequeña maravilla pesa 450 Kilobytes. La baje del sitio lostpassword.com http://www.lostpassword.com/f/downloads/ariskkey/ariskkey.exe. El modo de usarlo consiste en que se debe tener abierta la ventana con el password con asteriscos y en Asterisk (asi se llama el programa) se elije la opción Recover y muestra el password o passwords si tienes mas ventanas con asteriscos.

Es posible que algunos no estén felices de haber leído tanto para un post tan simplón. A mi me pasa lo mismo. De hecho critico a esos escritores de programación, que escriben cincuenta capítulos sobre la historia de un lenguaje y en el capitulo cincuenta y uno enseñan a hacer un hola mundo.

Lo que pasa es que tengo atragantado un montón de cosas de las cuales quiero escribir, sobre todo cuentos, criticas, pateaduras literarias, etc. No por eso piensen que van a encontrarle segundas lecturas a este escrito. Que no es cuento, es un post que parece cuento de como recuperar un password tapado por asteriscos.

domingo, 9 de agosto de 2009

Unir varias imagenes en un PDF



Este fin se semana me toco digitalizar un par de libros. Lo cual no es ninguna ciencia, aunque si supongo que se mejora con la practica, porque me quedaron en algunos casos esas zonas oscuras como de las fotocopias (solución que será material para otro posteo). Esas zonas oscuras supongo que se pueden eliminar usando algun editor gráfico o colocando con mas cuidado las hojas sobre el escaner. Pero queria compartir, una herramienta que me sirvio para unir todas las imagenes en un PDF. Se trata de Swift PDF que permite crear una lista ordenada de imagenes y luego guardarlas como un solo archivo PDF.

La aplicación funciona en Windows (la instalé sin problemas en Windows 7), es gratis, y se puede descargar desde el siguinte link:

http://j.gs/1p0U




Si te ha sido útil o te ha gustado el artículo, ayúdame compartiéndolo con tus amigos. Haz clic en el botón de la red social de tu preferencia. Gracias.

sábado, 8 de agosto de 2009

Como capturar menu boton derecho en Ubuntu

Sin duda hay hartas formas de hacer capturas de pantalla en Ubuntu. Pero ¿Has intentado capturar alguna pantalla en movimiento o el menú del boton derecho?. De seguro si estas leyendo esto es porque no te funciona apretar el botón Impr Pant para capturar el menú del botón derecho o una ventana en movimiento. Para tener una captura debes ir a Aplicaciones -> Accesorios -> Capturar pantalla donde dice Capturar tras un retardo de n segundos, agregas la cantidad de segundos que te demoraras en dejar la pantalla que quieres atrapar. Y al mas puro estilo de las antiguas camaras fotograficas, obtienes tu captura.

No hay ninguna plantilla instalada


Estaba tratando de crear un nuevo archivo en Ubuntu. Haciendo clic sobre el boton derecho. Cuando me llamo la atención el elemento en el menú Crear un documento, que decía "No hay ninguna plantilla instalada". Crear un archivo vacío para mi no era de gran ayuda. Aunque no fue por ese motivo que busque que queria decir el mensaje.
Las plantillas son archivos que tienen algun formato para ahorrar tiempo o son de un tipo en particular, por ejemplo un xml, una carta, una hoja de calculo, etc.

Estos archivos se guardan en la carpeta Plantillas, que esta en /home/nombre_usuario/. Por lo que cree mi archivo xml en la carpeta y probe el resultado.



Sin duda este tip puede servir para ahorrar bastante tiempo cuando trabajas con Ubuntu.

domingo, 2 de agosto de 2009

KXSLDbg debugger para XSTL


Me gusta lo poderoso que es el lenguaje XSL que permite transformar documentos XML en cualquier otro. De hecho lo uso para informes, generar código, etc. En Windows normalmente para estos menesteres uso Cooktop una herramienta sencilla y gratis que permite elegir un XML y luego un archivo XSL / XSLT y transformarlo. Pero en Linux (Ubuntu que es la distribucion que uso) no habia encontrado una herramienta como Cooktop. Hasta que encontre KXSLDbg. El uso me parecio un poco mas dificultuoso (sera la costumbre), pero es como la alternativa perfecta. Este ademas permite guardar los archivos generados en txt , html, docbook y xml.

Para instalarlo en Ubuntu se puede hacer a traves de Synaptic. Si bien la documentacion indica que es parte de KDE no hay problema en usarlo con Gnome.

martes, 21 de julio de 2009

Donde esta php.ini en Linux

Para saber donde esta el archivo php.ini en linux (ubuntu en mi caso). Se puede buscar con la siguiente instrucción:

sudo find / -name php.ini

el resultado que me aparece es:

/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini

¿y como se cual es el correcto? (me tinca donde esta el apache) Una forma de averiguarlo es realizar los cambios que necesito en la carpeta de apache.

Hice los un cambio en la configuracion, reinicie Apache y efectivamente la ruta correcta es:
/etc/php5/apache2/php.ini

Para reiniciar Apache en ubuntu
sudo /etc/init.d/apache2 restart









jueves, 16 de julio de 2009

Como centrar una aplicación silverlight en el navegador

Por defecto la aplicación Silverlight es alineada al lado izquierdo del navegador. Ejemplo:


A veces se necesita centrarla por lo que les mostrare una forma de hacerlo:

1. Editar la página donde esta incluido el archivo .xap.
Para los que comienzan lo mas seguro es que ese archivo es: nombre-del-proyecto_TestPage.aspx

En el siguiente código se muestran en negrita las modificaciones hechas para que la aplicación se vea centrada. En primer lugar al archivo original se agrego un div con ancho de 100% y margen 0. Al div que ya viene en el código se dejo margin auto, y el ancho y alto con las dimensiones del archivo xap.

<body style="height:100%;margin:0;">
<form id="form1" runat="server" style="height:100%;">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div style="width: 100%; margin: 0">
<div style="margin: auto; width: 600px; height: 300px">
<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/Carpetas2.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" />
</div>
</div>
</form>
</body>

El resultado:


Nota:
Visita también el link de como postear codigo fuente en blogger:
http://rightnowweb.blogspot.com/2008/10/como-publicar-cdigo-fuente-en-blogger.html

martes, 14 de julio de 2009

Como probar tus servicios WCF

Existe una herramienta gráfica que permite probar tus servicios WCF. Esta se encuentra en la siguiente dirección de tu instalación de Visual Studio (incluido Express):

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE

La herramienta es:
WcfTestClient.exe

Se debe agregar el servicio a probar, tal como lo haces en VS con Add Service y permite pasar parámetros a los servicios y ver los resultados.

martes, 7 de julio de 2009

Web Development Helper

Web Development Helper, es un plug in para Internet Explorer. Que proporciona herramientas para desarrolladores Web tales como DOM Inspector e HTTP Tracing. Se puede descargar desde el siguiente link:
http://projects.nikhilk.net/WebDevHelper/

sábado, 4 de julio de 2009

Agregar evento Load ASP.NET C#

Para agregar el evento Load en una página ASP.NET. En el método Page después de InitializeComponent(); se debe agregar:
Loaded
Signo +=
Luego Presionar tecla Tab (2 veces).

El resultado:

public Page()
{
InitializeComponent();
Loaded += new RoutedEventHandler(Page_Loaded);
}

void Page_Loaded(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}

Error HTTP 404.3 - Not Found (IIS 7.5)

He desarrollado unos servicios WCF. Estos funcionan correctamente en mi equipo del trabajo que tiene Vista e IIS 6. Pero en el de mi casa no, el equipo de mi casa tiene Windows 7 e IIS 7.5. El mensaje que me muestra al tratar de ejecutarlos es: Error HTTP 404.3 - Not Found

Después de buscar la solución en varios foros encontré la solución en la ayuda del mismo IIS 7 y casi sin quererlo. La solución es la siguiente:

Inicio
Panel de Control
Programas
Activar o desactivar las características de Windows

Se abre una ventana de dialogo en la cual se debe buscar el elemento Microsoft .NET Framework 3.5.1.

Debes expandir ese elemento y activar:
Windows Communication Foundation HTTP Activation

martes, 16 de junio de 2009

DataContext desde código

En este artículo de Microsoft se explica como conectarse a una base desde Linq. Ademas se agrega un DataContext desde código. El problema es que no me funciona al agregrarlo a mi proyecto. Falta un namespace ¿Que namespaces debe ir?

el namespaces es System.Data.Linq, se debe agregar la referencia al ensamblado System.Data.Linq en el menu Project -> Add Reference.

Por lo que nos queda:
DataContext db = new DataContext(ConfigurationManager.ConnectionStrings["conexion"].ToString());

En el archivo Web.config definí la cadena de conexión:

<connectionStrings>
<add name="conexion" connectionString="Server=MARCOS-PC\SQLEXPRESS;Database=CarpetasSeguridad;User ID=sa;Password=123456;Trusted_Connection=False;"/>
</connectionStrings>

Por lo que para llamarla desde cualquier parte de la aplicación. Primero se debe agregar el ensamblado de configuración.

using System.Configuration;

para retornar una lista de una tabla se puede utilizar un código como sigue:

public class miServicio : Imiservicio {

DataContext db = new DataContext(ConfigurationManager.ConnectionStrings["conexion"].ToString());

public List ObtenerCarpetas(string Servidor) {
Table carpetas = db.GetTable();
var consulta = from p in carpetas
where p.Servidor == Servidor
select p;
return consulta.ToList();
}
}

Otros links de consulta:

Tutorial de Silverlight 2 con WCF
http://geeks.ms/blogs/mredison/archive/2008/05/16/tutorial_2D00_de_2D00_silverlight_2D00_2_2D00_con_2D00_wcf.aspx

domingo, 7 de junio de 2009

UserControl is not supported in a WPF

UserControl is not supported in a Windows Presentation Foundation (WPF) project

Este error se presenta al abrir un proyecto creado con Visual Studio 2008 en Microsoft Blend. La razón es que en Blend se debe hacer referencia a las siguientes librerias:

PresentationCore.dll
PresentationFramework.dll
WindowsBase.dll.

Para agregar las referencias en Blend es sencillo, en el menú Project , elegir Add Reference

Las librerias se encuentran en esta dirección:
C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0

domingo, 24 de mayo de 2009

Validar Fecha en C#

Acabo de hacer una funcion en C#, que permite validar una fecha en un formulario Web.De acuerdo a si la fecha que ingreso es fecha (de partida), o es Mayor, Mayor o igual , igual o menor a la fecha actual.
La comparto con todos los que visitan el sitio para que la utilizen, la mejoren o simplemente me digan si es posible hacer lo mismo pero de mejor manera.

La funcion se llama:
validarFecha

Los parametros que recibe son:

1.Fecha a comparar
2.Control CustomValidator
3.Comparación [Mayor, MayorIgual, Menor, Igual]

Si las condiciones no se cumplen se muestra el mensaje que hayas configurado en el control CustomValidator

//www.marcosdonoso.cl 25/05/2009
private void validarFecha(string Fecha, CustomValidator cVal, string Comparacion)
{
int diferencia;
DateTime fechaHoy = DateTime.Now;
DateTime fechaParametro;
if (Fecha == "")
{
cVal.IsValid = false;
}
else
{
try
{
fechaParametro = DateTime.Parse(Fecha);
TimeSpan ts = fechaParametro - fechaHoy;
diferencia = ts.Days;
//Response.Write(diferencia);
if (Comparacion == "Mayor")
{
if (diferencia > 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
if (Comparacion == "MayorIgual")
{
if (diferencia >= 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
if (Comparacion == "Menor")
{
if (diferencia < 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
if (Comparacion == "Igual")
{
if (diferencia == 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
}
catch
{
cVal.IsValid = false;
}
}

}


Pueden descargar un ejemplo donde la utilizo desde la siguiente ubicación:
http://j.gs/TYt

Recomiendo la lectura de estos posts si hay problemas:
http://marcosdonoso.cl/?p=140

http://dotnetperls.com/Content/DateTime-Parse.aspx

sábado, 23 de mayo de 2009

Instalar un rpm en Ubuntu

En Synaptics encuentras casi todo, digo casi, porque aveces es necesario buscar en otras fuentes. Eso me paso, al estar buscando una herramienta gráfica para administrar vsftd que es un servidor ftp. Al momento de encontrarla me di cuenta que no estaba como paquete .deb sino como .rpm. Lo lógico era preguntarse. ¿Se podrá instalar un rpm en Ubuntu o en una distribución Debian? Y la respuesta es si, si se puede. Conviertiendo el rpm en deb. Con una utilidad llamada alien

Para instalar alien se debe hacer lo siguiente:
sudo apt-get install alien

Para convertir el .rpm
sudo alien -d paquete.rpm

Les contaba que encontre una herramienta gráfica para vsftpd esta se llama system-config-vsftpd

Sitio en SF de system-config-vsftd
http://sourceforge.net/projects/vsftpd-config/

para convertirlo a deb con alien
sudo alien -d system-config-vsftpd-0.5.4-1.fc10.src.rpm

domingo, 17 de mayo de 2009

Como optimizar un Power Point

Estoy terminando un plug in que permite al departamento de Marketing centralizar los archivos de presentaciones, imagenes y logos. De tal manera que las personas que necesiten crear una presentacion hagan uso del plug in, el cual les dispone de todos esos archivos centralizados. Pero me encontre con un problema. Los ppt son muy pesados, por ejemplo, uno de ellos pesaba 1.7 MB. El cual puesto en una carpeta compartida y siendo solicitado por mas de 100 personas implica que hay un problema de performance.

Encontre una forma de optimizar el ppt desde el mismo Power Point. El ppt de 1.7 MB bajo a 1.1, algo es algo.

En el menu de Herramientas -> Imágenes se encuentra un boton llamado Comprimir imágenes. El cual al pinchar les mostrará un diálogo en donde pueden seleccionar imagen actual o todo el documento. Y lo mas importante Cambiar resolución, ante lo cual se debe seleccionar Web o pantalla.

Esto fue probado en Office 2003.

martes, 21 de abril de 2009

Copiar archivo desde VBScript

dim filesys, demofile
set filesys = CreateObject ("Scripting.FileSystemObject")
set demofile = filesys.GetFile("VB6ES.dll")
demofile.Copy("c:\")

Registrar OCX o DLL desde VBSCRIPT

Con este script es posible automatizar en parte el registro de Ocx y Dll's

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "regsvr32.exe MSDATGRD.OCX"

domingo, 29 de marzo de 2009

Listas con css

He copiado el estilo de un par de tutoriales de css para hacer que una lista aparesca en forma horizontal y nada.

Supongamos que mi lista es la siguiente:

<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
</ul>

Y deseo que aparesca de forma horizontal, como lo hago con CSS?

El estilo necesario es el siguiente:

<style>
ul li{
display:inline;
}
</style>

Si deseas agregarle un icono a los elementos li puedes hacer lo siguiente:
Agrego padding-left para establecer la zona de relleno izquierdo al texto, y la imagen que quiero mostrar en ese link.

.icono1{
padding-left: 20px;
background:url(../templates/maps/maps/mapa_r1_c2_r2_c2.jpg) no-repeat;
}

por lo que la lista quedaría como sigue:

<ul>
<li class="icono1" >Elemento 1</li>
<li>Elemento 2</li>
</ul>

Encontre este codigo css que asocia la extension a la que apunta el link con una imagen, no lo he probado.

a[href $='.pdf'] {
padding-left: 20px;
background: transparent url(icon_pdf.gif) no-repeat center left;
}

viernes, 20 de marzo de 2009

Moderar SMF

Tengo un foro SMF www.elforo.cl cuyos post se han llenado de spam ultimamente. Para mi que hay gente que le pagan para que haga spam porque no son robots. Para registrarse hay un captcha. Habran robots que salten los captchas?, me asalta la duda. Investigare luego.
El tema es que estaba buscando un medio para desacerme de tanta basura, porque bloquear uno a uno y eliminar uno a uno los mensajes, habria que tener casi el mismo tiempo que tienen los spammers para estar moderando.
Encontre una forma de hacer eso mas rapido. Se trata de habilitar para mi perfil un checkbox en cada post de modo de seleccionar varios al mismo tiempo y bloquear los spamers y eliminar los post en el mismo lugar.

El truco es:
Editar perfil -> Configuración de Apariencia y Diseño --> En la linea que dice:
Mostrar la moderación rápida en el índice de mensajes como seleccionar checkboxes

¡tadan¡ borre toda la basura en pocos minutos. Eso no quiere decir que acabe con el spam en mi foro. Por lo que sigo buscando un mod que detecte alguna de las tipicas frasesitas de los spam y elimine el solo el post o no lo publique hasta que haga moderacion sobre el.

jueves, 12 de marzo de 2009

Comillas en MS SQL

Mas de programador ha necesitado alguna vez o va a necesitar concatenar scripts en SQL. El problema surge para cuando un parametro tiene que pasarse entre comillas y tu ya vienes con comillas abiertas.

En SQL no puedes empezar con comillas dobles, empiezas con las simples y acabas tus opciones. En otros lenguajes puedes usar comillas dobles dentro de la expresion comillas simples y funciona.

En Sql puedes usar lo siguiente chr(39) para mostrar una comilla simple.

Por ejemplo necesitaba pasar una consulta a una variable y los parametros devian ir con comillas. La solución la comparto a continuacion:

@script = '
SELECT CAMPO1, CAMPO2 FROM TABLA
WHERE [DeclFec] BETWEEN ' + char(39) + convert(varchar,@fechadesde,112) + char(39) + ' AND ' + char(39) + convert(varchar,@fechahasta,112) + char(39)

IIS - A non-faltal configuration error ocurred




En un servidor de testing de la empresa esta ocurriendo el siguiente error, que impide crear nuevas carpetas virtuales o editar otras:


A non-faltal configuration error ocurred. Not all available information may be displayed.


Esto ocurre cuando la metabase del IIS esta corrupta. Los sitios que consulte indican que algun sitio esta provocando este error por lo que se debe eliminar. Mi IIS tiene cerca de 80 sitios como saber?

Segui los pasos de este blog pero no consegui gran cosa:

http://blogs.msdn.com/rakkimk/archive/2006/11/06/won-t-be-able-to-change-certain-properties-of-the-website-popup-quot-a-non-fatal-configuration-error-occured-quot-when-opening-iis-manager-gui.aspx


Hice una restauración , pero el punto que tenia disponible era muy antiguo por lo que no me sirvio de mucho. Antes cree un Back Up por lo volvi a utilizarlo. Retomando el error en cuestion.

Para utilizar estas caracteristicas tienes que hacer clic con el boton derecho en el servidor de IIS y luego elegir BackUp/Restore Configuration



Por lo que la unica solución disponible es ubicar el sitio que esta corrupto y eliminarlo.

Pero el otro problema es que cuando voy a eliminar algun sitio me sale este otro mensaje: The path especified cannot be used at this time.



La ayuda de Microsoft es super alentadora al respecto:
http://technet.microsoft.com/es-es/library/cc956704(en-us).aspx

dice que la carpeta es siendo usada por otro subproceso y que intente de nuevo. Genial.

Que hice?
Detube el servicio de IIS. Inicio -> Ejecutar -> services.msc -> Enter.
Y todo volvio a la normalidad sin esperarlo. Pude eliminar sitios, editar la configuracion, crear nuevas carpetas virtuales, etc.



Más información:
http://localhost/iishelp/iis/htm/adminsamples/default.htm
Copia y pega este link en tu server para obtener ayuda sobre adsutil.vbs

martes, 10 de marzo de 2009

Plug in de Power point

Una de las cosas que estoy haciendo ultimamente es un plug in de power point que permite de forma facil agregar logos, imagenes de la imagen corporativa de las empresas que conforman el grupo empresarial para el que trabajo.

Una de las dudas que tenia era como hacer para que al iniciar Power Point se iniciará tambien mi plug in. Leyendo el libro:

PowerPoint Advanced Presentation Techniques
by Faithe Wempen
John Wiley & Sons © 2004
ISBN:0764568817

encontre este link interesante que les dejo a todos los que buscan esa información.

http://support,microsoft.com/?scid=kb;EN-US;q222685

si bien es cierto se trata de la version 2000 deberia funcionar tambien para las mas recientes.

Otros links interesantes:

http://www.pptfaq.com/FAQ00031.htm

http://skp.mvps.org/ppafaq.htm

http://www.pptalchemy.co.uk

domingo, 8 de marzo de 2009

Cannot send session cache limiter

Tengo una archivo php que hace las veces de menu. Por lo que lo llamo desde las páginas de la siguiente forma:

include("menu.php");
?>

dentro del menu muestra el e-mail de la persona. Este dato previamente lo he guardado en una sesión:

session_start();
$usuario = $_SESSION["EMAIL_USU"];
echo "Bienvenido :".$usuario."";

y me muestra el siguiente error:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/elforoc/public_html/mapa/configurar.php:8) in /home/elforoc/public_html/mapa/menu.php on line 2

En algunos foros leo que se trata de espacios que hay despues de los signos

Solucione el problema llevando las siguientes lineas al archivo que me estaba dando error:
session_start();
$usuario = $_SESSION["EMAIL_USU"];
?>

luego en el archivo menu.php hice mención de la variable.




Libro, Aprende a Programar en PHP YA!

viernes, 27 de febrero de 2009

call to undefined method stdclass

Me encontre con este error desarrollando una aplicación PHP / MySQL / JQuery. El codigo que estaba dando error era el siguiente:


$usuarios->EMAIL_USU=$EMAIL_USU;
$usuarios->NOMBRE_USU=$NOMBRE_USU;
$usuarios->COMUNA_COM=$COMUNA_COM;
$usuarios->PASSWORD_USU=$PASSWORD_USU;
$usuarios->Save();
echo json_encode("Registro guardado!!!");

el error era porque no estaba instanciando la clase:

$cusuarios = new usuarios();
$cusuarios->EMAIL_USU=$EMAIL_USU;
$cusuarios->NOMBRE_USU=$NOMBRE_USU;
$cusuarios->COMUNA_COM=$COMUNA_COM;
$cusuarios->PASSWORD_USU=$PASSWORD_USU;
$cusuarios->Save();
echo json_encode("Registro guardado!!!");




Libro, Aprende a Programar en PHP YA!

domingo, 11 de enero de 2009

Capturar parte de la pantalla

Muchos saben que apretando el boton Impr Pant se puede hacer una captura de pantalla para posteriormente tratarla en un editor de imagenes. Luego de eso se puede cortar una region de la pantalla. Pero, todo eso lleva algun tiempo en realizar. Es mejor una herramienta que permita hacer eso en menos pasos.

Buscando esa herramienta encontre un addons para Firefox que permite hacer eso y mas. Se trata de Fireshot que permite ademas de capturar una region de la pantalla:

- subirla a un hosting
- guardarla al disco (en formatos PNG, GIF, JPEG, BMP)
- imprimirla
- copiarla al guardapapeles
- enviarla por e-mail
- configurar un editor externo para editarla.

lamentablemente no esta disponible para Linux.

Actualizado 22/07/2009

Pero en Ubuntu puedes hacer lo siguiente:
- ir a Aplicaciones
- Accesorios
- Capturar pantalla

En Windows se puede capturar la ventana activa presionando ALT + Imp Pant

Buscar un archivo en Linux desde consola

Estoy haciendo un plug in para Zen Cart, y necesito ubicar el archivo tpl_product_info_display.php, y con solo ver el arbol de directorio del proyecto ya me imagino el tiempo que me va a tomar saber donde esta el archivo. Necesito ubicarlo rapidamente. Pero como.

En una consola puedes escribir lo siguiente:
Locate Nombre_Archivo

y obtendras la ubicación de los archivos que responden al nombre que haz ingresado.

Lanzar una terminal desde una carpeta

Necesitas dar permisos a la carpeta que esta en /var/www/proyecto/modulo/plugin/... etc. Por lo que tienes que darte la lata de abrir una terminal, escribir o copiar y pegar el path para llegar a esa ruta en tu Linux. Y hechas de menos un elemento en el menu del botón derecho que te diga Abrir en un terminal, y que al hacer clic te deje posicionado en esa carpeta. Que alivio si eso existiera. Bueno, existe en el navegador de archivos Nautilus por lo que haz lo siguiente ahora mismo:

Abre un terminal
Escribe sudo apt-get install nautilus-open-terminal
Luego killall nautilus
Abre nautilis navega a una carpeta, da clic en el botón derecho y encontraras un elemento que dice Abrir en un terminal.

martes, 6 de enero de 2009

Como saber la estructura de una tabla en MySQL

La verdad es que estoy mas acostumbrado a trabajar en MS SQL que en MySQL. Por ejemplo, cuando quiero saber cual es la estructura de una tabla en MS SQL desde un cliente coloco la siguiente consulta:

sp_help nombre_tabla

en MySQL es distinto, para saber la estructura de una tabla se debe ingresar lo siguiente:

show columns from nombre_tabla;

Consultar control de otra página con Javascript

Tengo una página (index.php), que recibe un parámetro por la url (categoria). Y dentro de la página index.php tengo un iframe que carga la página upload.php. La cual (upload.php) sube un archivo y al mismo tiempo tiene que guardar en una tabla de base de datos el nombre del archivo y la categoria. El cuento es ¿Como accedo al valor categoría desde la página upload.php?

La solución que encontre fue guardar el valor de categoría en un campo oculto en la página principal:

<input type="hidden" name="categoria" id="categoria" value="<?php echo $categoria; ?>">

Y luego desde el iframe consulto el valor del campo oculto de la siguiente manera:

var categoria = parent.document.getElementById("categoria").value;

Si alguien necesita el código completo, lo puede solicitar al siguiente e-mail: mdonoso2007@gmail.com

viernes, 2 de enero de 2009

Cannot resolve collation conflict for equal to operation

Estaba pasando a producción un sistema .Net con SQL Server y tube algunos problemas. Entre ellos, que en producción (servidorPro) aparentemente no tenía todos los procedimientos que debian estar. Por lo que me surgio la necesidad de hacer una comparación de lo que tenía en ambos servidores. No tenia ninguna herramienta a mano, por lo que hice una consulta a las bases involucradas cada una en un servidor distinto.

Hice una consulta a la tabla sysojects de ambos servidores que devolviera todos los procedimientos (type='P') de la base con diferencia.

En ambiente de testing estoy parado sobre la base que estoy comparando. Ejecute el siguiente script:

select a.name, b.name
from sysobjects a
left outer join servidorPro.basePro.dbo.sysobjects b
on a.name=b.name
where a.type='P'
order by a.name

lo cual me dio el siguiente error:
Cannot resolve collation conflict for equal to operation

Por lo que al averiguar que collate tenian las bases:
SELECT DATABASEPROPERTYEX('basePro','Collation')

me di cuenta que habian diferencias, una de ellas tiene: Modern_Spanish_CI_AS y la otra Latin1_General_BIN. De modo que a mi script anterior agregue la linea
COLLATE Latin1_General_BIN en la linea donde comparo los campos.

select a.name, b.name
from sysobjects a
left outer join servidorPro.basePro.dbo.sysobjects b
on a.name=b.name COLLATE Latin1_General_BIN
where a.type='P'
and b.name is null

¿Y que retorna este script?
Retorna todos los procedimientos de cada base y cuando uno de ellos no tiene coincidencia osea no se encuentra me retorna un NULL, con eso se que procedimiento me falta en que base de datos.